作者marketcos (marketcos)
看板Python
標題[問題] 取代多行FOR迴圈的辦法
時間Mon Dec 12 15:53:36 2011
本身PYTHON初學者
這個問題 我想了兩天了
怎麼寫都很遜, 煩請高手來指點
事情是這樣的...
我想把數個lists的元素組合起來
例如:
# listOne,listTwo,listThree分別是 ['a','b','c'] ['d','e','f'] ['g','h','i']
tmp = ""
combination = []
for i in listOne:
for j in listTwo:
for k in listThree:
tmp = i + j + k
combination.append(tmp)
print combination
執行結果會是
['adg', 'adh', 'adi', 'aeg', 'aeh', 'aei', 'afg', 'afh', 'afi', 'bdg', 'bdh',
'bdi', 'beg', 'beh', 'bei', 'bfg', 'bfh', 'bfi', 'cdg', 'cdh', 'cdi', 'ceg',
'ceh', 'cei', 'cfg', 'cfh', 'cfi']
我的問題是,如果今天我的lists不只三個 (可能會有100個)
除了for迴圈寫一百行, 還有什麼比較快的方法呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.5.131
※ 編輯: marketcos 來自: 140.113.5.131 (12/12 15:57)
→ darkgerm:如果有100個而且每個都是3個元素的話就有3^100個耶 12/12 16:52
推 mikapauli:lists=[...] 12/12 19:10
→ mikapauli:c=[''] 12/12 19:11
→ mikapauli:for l in lists: 12/12 19:12
→ mikapauli: c=[i+j for i in c for j in l] 12/12 19:13
推 mikapauli:print(c) 12/12 19:16