Попарно crossproduct в Python [дубликат]
этот вопрос уже есть ответ здесь:
Получить декартово произведение ряда списков?
10 ответов
как я могу получить список товара крест пар из списка произвольно длинных списков в Python?
пример
a = [1, 2, 3]
b = [4, 5, 6]
crossproduct(a,b) должна принести [[1, 4], [1, 5], [1, 6], ...].
3 ответов:
вы ищете itertools.продукт Если вы на (по крайней мере) Python 2.6.
>>> import itertools >>> a=[1,2,3] >>> b=[4,5,6] >>> itertools.product(a,b) <itertools.product object at 0x10049b870> >>> list(itertools.product(a,b)) [(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
так как вы просили список:
[(x, y) for x in a for y in b]но вы можете избежать накладных расходов списка, если вы просто перебираете их с помощью генераторов вместо этого:
((x, y) for x in a for y in b)ведет себя одинаково в
forпетли, но не приводит к созданиюlist.
использование генераторов нет необходимости в itertools, просто:
gen = ((x, y) for x in a for y in b) for u, v in gen: print u, v
Comments