我想做的事情是創(chuàng)建每一個(gè)組合,但只使用每個(gè)字母中的一個(gè)我用 3 組字母做到了inlist = ["Aa", "Bb", "Cc"]outlist = []for i in inlist[0]: for j in inlist[1]: for k in inlist[2]: outlist.append(str(i + j + k))輸出:outlist = ['ABC', 'ABC', 'AbC', 'Abc', 'aBC', 'aBc', 'abC', 'abc']如果我想用 2 組或 4 組字母來(lái)做這件事怎么辦?有沒(méi)有更簡(jiǎn)單的方法?
2 回答

慕桂英3389331
TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
itertools.product 正是這樣做的:
from itertools import product
inlist = ["Aa", "Bb", "Cc"]
outlist = []
for abc in product(*inlist):
outlist.append(''.join(abc))
print(outlist)
# ['ABC', 'ABc', 'AbC', 'Abc', 'aBC', 'aBc', 'abC', 'abc']
abc是一個(gè)從('A', 'B', 'C')到的元組('a', 'b', 'c')。剩下的唯一事情就是join回到帶有''.join(abc).

心有法竹
TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
>>> import itertools
>>> inlist = ["Aa", "Bb", "Cc"]
>>> [''.join(i) for i in itertools.product(*inlist)]
['ABC', 'ABc', 'AbC', 'Abc', 'aBC', 'aBc', 'abC', 'abc']
添加回答
舉報(bào)
0/150
提交
取消