2 回答

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
itertools.combinations將為您提供一定長(zhǎng)度的所有組合。我們對(duì)每個(gè)可能的子列表長(zhǎng)度采用所有組合。然后,我們將您感興趣的函數(shù)(lambda函數(shù),在本例中為"x".join)映射到每個(gè)生成的組合。
>>> import itertools as it
>>> a = ['a','b','c']
>>> l = [map("x".join, list(it.combinations(a, l))) for l in range(1,len(a)+1)]
>>> l
[['a', 'b', 'c'], ['axb', 'axc', 'bxc'], ['axbxc']]
現(xiàn)在l是我們要展平的列表的列表:
>>> [ x for y in l for x in y]
['a', 'b', 'c', 'axb', 'axc', 'bxc', 'axbxc']

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊
這個(gè)怎么樣?
>>> import itertools
>>> def func(mylist, letter):
... L = []
... for i in range(len(mylist)):
... L.append(list(itertools.combinations(mylist,i+1)))
... return [letter.join(i) for i in itertools.chain.from_iterable(L)]
...
>>> func(['a','b','c'], 'x')
['a', 'b', 'c', 'axb', 'axc', 'bxc', 'axbxc']
添加回答
舉報(bào)