Получить декартово произведение из серии списков? - PullRequest
265 голосов
/ 10 февраля 2009

Как я могу получить декартово произведение (каждую возможную комбинацию значений) из группы списков?

Ввод:

somelists = [
   [1, 2, 3],
   ['a', 'b'],
   [4, 5]
]

Желаемый вывод:

[(1, 'a', 4), (1, 'a', 5), (1, 'b', 4), (1, 'b', 5), (2, 'a', 4), (2, 'a', 5) ...]

Ответы [ 11 ]

2 голосов
/ 30 октября 2015

Просто добавлю немного к тому, что уже было сказано: если вы используете sympy, вы можете использовать символы, а не строки, что делает их математически полезными.

import itertools
import sympy

x, y = sympy.symbols('x y')

somelist = [[x,y], [1,2,3], [4,5]]
somelist2 = [[1,2], [1,2,3], [4,5]]

for element in itertools.product(*somelist):
  print element

О sympy .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...