2012-02-01 2 views
4

Можно создать дубликат:
Get the cartesian product of a series of lists in PythonPython декартова продукт

Я пытаюсь выяснить, какую-то логику, что я просто не могу обернуть мою голову вокруг. Скажем, у меня есть следующая структура данных:

letters = (
    ('b','c'), 
    ('a','e','ee'), 
    ('d','f'), 
    ('e','y'), 
) 

Как бы я перебирать это, чтобы получить все возможные комбинации строк:

bade 
cade 
bede 
cede 
beede 
ceede 
bafe 
cafe 
befe 
cefe 
beefe 
ceefe 
bady 
cady 
bedy 
cedy 
beedy 
ceedy 
bafy 
cafy 
befy 
cefy 
beefy 
ceefy 
+4

Вы разыскиваете для декартова продукта: http://docs.python.org/library/itertools.html#itertools.product –

ответ

6

Я бы использовать itertools.product():

for l in itertools.product(*letters): 
    print ''.join(l) 
+0

Какая польза от '*' перед письмами? Что оно делает? –

+1

Аргумент распаковки: * [a, b, c] является a, b, c –