3 回答

TA貢獻(xiàn)1799條經(jīng)驗 獲得超6個贊
通過將所需的列表追加到新列表中使用簡單迭代:
lst = ['a', 'b', 'c', 'd', 'e']
nlst = []
for i in range(len(lst)):
for y in lst[i:]:
nlst.append(lst[:i] + list(y))
for x in nlst:
print(x)
# ['a']
# ['b']
# ['c']
# ['d']
# ['e']
# ['a', 'b']
# ['a', 'c']
# ['a', 'd']
# ['a', 'e']
# ['a', 'b', 'c']
# ['a', 'b', 'd']
# ['a', 'b', 'e']
# ['a', 'b', 'c', 'd']
# ['a', 'b', 'c', 'e']
# ['a', 'b', 'c', 'd', 'e']

TA貢獻(xiàn)1802條經(jīng)驗 獲得超6個贊
使用itertools recipes 中的 powerset recipe ,您可以執(zhí)行以下操作:
from itertools import chain, combinations
def powerset(iterable):
s = list(iterable)
it = chain.from_iterable(combinations(s, r) for r in range(len(s) + 1))
return map(list, (e for e in it if e))
result = sorted(powerset(['a', 'b', 'c', 'd']), key=lambda x: (len(x), ''.join(x)))
for s in result:
print(s)
輸出
['a']
['b']
['c']
['d']
['a', 'b']
['a', 'c']
['a', 'd']
['b', 'c']
['b', 'd']
['c', 'd']
['a', 'b', 'c']
['a', 'b', 'd']
['a', 'c', 'd']
['b', 'c', 'd']
['a', 'b', 'c', 'd']
更新
鑒于更新的要求,您可以執(zhí)行以下操作:
lst = ['a', 'b', 'c', 'd']
length = len(lst)
def patterns(l):
for i in range(length):
for c in l[i:]:
yield l[:i] + [c]
for pattern in sorted(patterns(lst), key=lambda x: (len(x), ''.join(x))):
print(pattern)
輸出
['a']
['b']
['c']
['d']
['a', 'b']
['a', 'c']
['a', 'd']
['a', 'b', 'c']
['a', 'b', 'd']
['a', 'b', 'c', 'd']

TA貢獻(xiàn)1803條經(jīng)驗 獲得超3個贊
嘗試這個:
from itertools import combinations
a = ['a', 'b', 'c', 'd']
result = [list(combinations(a,i))for i in range(1,len(a)+1)]
并像這樣打?。?/p>
for i in result:
print(*list(i), sep='\n')
添加回答
舉報