作者poototo (poototo)
看板Python
标题Re: [问题] 列出一个列表中所有子集合
时间Sat Dec 3 13:23:23 2022
版友均有点出逻辑关键,另补充以下写法,直接反应子集数量呈倍数成长
------------------------------------------------
L = [1, 2, 3]
S = [[]]
#
for i in L:
S += [e+[i] for e in S]
#
print(S)
※ 引述《rebe212296 (绿豆冰)》之铭言:
: 请问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],先谢谢版大的回答。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.193.13.182 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1670045006.A.6E0.html
1F:推 OnoderaHaru: 推这篇 刚发现自己的方法的执行时间太长 12/03 14:10
2F:推 ddavid: 这个简洁但缺点就是需要完整空间把结果存下来 12/05 12:36
3F:推 rebe212296: 谢谢,请问[]里面的加号代表的意思 12/08 09:55
4F:推 papple23g: +[ ] 作用类似於 .extend() 12/08 12:40