Itérer sur toutes les combinaisons de valeurs dans plusieurs listes en Python
Étant donné plusieurs listes de longueur éventuellement variable, je veux itérer sur toutes les combinaisons de valeurs, un élément de chaque liste. Par exemple:
first = [1, 5, 8]
second = [0.5, 4]
Alors 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 listecombinée . Comment puis-je obtenir ce fait?
29
demandé sur
Martin Thoma
2013-05-05 15:36:55
2 réponses
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 n'allez l'itérer qu'une seule fois.
Par exemple.
for x in itertools.product([1, 5, 8], [0.5, 4]):
# do stuff
59
répondu
Volatility
2013-05-05 11:40:41
Ceci peut être réalisé sans aucune importation en utilisant une compréhension de 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)]
2
répondu
spinup
2018-04-28 01:42:54