Этот вопрос уже имеет ответ здесь:
Как я могу получить список пар векторного произведения из списка произвольно длинных списков в Python?
a = [1, 2, 3]
b = [4, 5, 6]
crossproduct(a,b)
должен уступить [[1, 4], [1, 5], [1, 6], ...]
.
Вы ищете itertools.product , если используете (как минимум) 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
, но не приводит к созданию списка
.