Compte tenu de plusieurs listes de longueurs éventuellement variables, je souhaite parcourir toutes les combinaisons de valeurs, un élément de chaque liste. Par exemple:
first = [1, 5, 8]
second = [0.5, 4]
Ensuite, je veux que la sortie de soit:
combined = [(1, 0.5), (1, 4), (5, 0.5), (5, 4), (8, 0.5), (8, 4)]
Je veux parcourir la liste combinée. Comment dois-je procéder?
itertools.product
devrait faire l'affaire.
>>> list(itertools.product([1, 5, 8], [0.5, 4]))
[(1, 0.5), (1, 4), (5, 0.5), (5, 4), (8, 0.5), (8, 4)]
Notez que itertools.product
renvoie un itérateur, vous n'avez donc pas besoin de le convertir en liste si vous ne devez l'itérer qu'une seule fois.
par exemple.
for x in itertools.product([1, 5, 8], [0.5, 4]):
# do stuff
Cela peut être réalisé sans aucune importation en utilisant un compréhension de la liste . En utilisant votre exemple:
first = [1, 5, 8]
second = [0.5, 4]
combined = [(f,s) for f in first for s in second]
print(combined)
# [(1, 0.5), (1, 4), (5, 0.5), (5, 4), (8, 0.5), (8, 4)]