[问题] 列出一个列表中所有子集合

楼主: 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