[問題] 列出一個列表中所有子集合

作者: rebe212296 (綠豆冰)   2022-11-26 16:09:48
請問list的子集合如何求出,我想做的是投入一列表可以return其子集的函式
nums=[1,2,3]
#這是想要的結果 [[],[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3]]
#想法:每抽出1,2,3,幾個元素,便存成一個list
def NS(list):
S=[]
j=len(list)
for i in list:
S.append([i])
while(j>=0):
S.append(list[:j])
S.append(list[j:])
j-=1
return S
print(NS(nums))
#這個結果是
[[1], [2], [3], [1, 2, 3], [], [1, 2], [3], [1], [2, 3], [], [1, 2, 3]]
可是我求不出[1, 3],先謝謝版大的回答。
作者: lycantrope (阿寬)   2022-11-26 16:55:00
原始code是把list從頭到尾切兩邊再append,並不是組合可以查一下itertools.combinations
作者: genius091612 (Yomao)   2022-11-26 18:00:00
leetcode 78. Subsets 就是你要的
作者: mantour (朱子)   2022-12-02 07:36:00
想一下樹狀圖:第一層是“1”要放或不放,第二層是”2”要放或不放,...或是想成2進位的000到111,000對應[ ],111對應[1,2,3]

Links booklink

Contact Us: admin [ a t ] ucptt.com