2012-02-01 99 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 – 2012-02-01 18:22:55

回答

6

我會使用itertools.product()

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

字母前使用'*'有什麼用途?它有什麼作用? – 2015-08-25 09:24:49

+1

參數解包:* [a,b,c]是a,b,c – 2016-10-02 14:31:36