Попарное векторное произведение в Python [дубликат]

Этот вопрос уже имеет ответ здесь:

Как я могу получить список пар векторного произведения из списка произвольно длинных списков в Python?

Пример

a = [1, 2, 3]
b = [4, 5, 6]

crossproduct(a,b) должен уступить [[1, 4], [1, 5], [1, 6], ...].

99
задан Martin Thoma 28 November 2015 в 19:41
поделиться

2 ответа

Вы ищете 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)]
138
ответ дан 24 November 2019 в 05:00
поделиться

Поскольку вы просили список:

[(x, y) for x in a for y in b]

Но вы можете избежать накладных расходов на список, если вы просто перебираете их, используя вместо этого генераторы:

((x, y) for x in a for y in b)

Ведет себя идентично циклу for, но не приводит к созданию списка.

80
ответ дан 24 November 2019 в 05:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: