Iteracja wszystkich kombinacji wartości w wielu listach w Pythonie
Biorąc pod uwagę wiele list o prawdopodobnie różnej długości, chcę iterować wszystkie kombinacje wartości, po jednym elemencie z każdej listy. Na przykład:
first = [1, 5, 8]
second = [0.5, 4]
Następnie chcę, aby wynik był:
combined = [(1, 0.5), (1, 4), (5, 0.5), (5, 4), (8, 0.5), (8, 4)]
Chcę iterować nad połączoną listą. Jak to zrobić?
29
Author: Martin Thoma, 2013-05-05
2 answers
itertools.product
powinno wystarczyć.
>>> list(itertools.product([1, 5, 8], [0.5, 4]))
[(1, 0.5), (1, 4), (5, 0.5), (5, 4), (8, 0.5), (8, 4)]
Zauważ, że itertools.product
zwraca iterator, więc nie musisz przekonwertować go na Listę, jeśli zamierzasz wykonać iterację tylko raz.
Np.
for x in itertools.product([1, 5, 8], [0.5, 4]):
# do stuff
59
Author: Volatility,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-05 11:40:41
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-05 11:40:41
Można to osiągnąć bez importowania za pomocą rozumienia listy . Używając Twojego przykładu:
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
Author: spinup,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-28 01:42:54
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-28 01:42:54