Re: [問題] 列出一個列表中所有子集合已刪文

看板Python作者 (小野寺春)時間2年前 (2022/12/03 04:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/5 (看更多)
# 想法: 使用遞迴 # foo([1, 2]) 包含 [] , [1] , [2] , [1, 2] # foo([1, 2, 3]) 包含 [] , [1] , [2] , [1, 2] --> 與上面相同 # 以及 [3], [1, 3], [2, 3], [1, 2, 3] --> 比上面多最後一項 # 最後再依照子元素的長度排序 def foo(ls: list) -> list: if not ls: return [[]] return sorted( foo(ls[:-1]) + [x + [ls[-1]] for x in foo(ls[:-1])], key=len ) ※ 引述《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],先謝謝版大的回答。 -- 小野寺春が大好きだよ~ https://i.imgur.com/p7jq5X0.gif
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.138.97.185 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1670011302.A.F5D.html
文章代碼(AID): #1ZYbcczT (Python)
文章代碼(AID): #1ZYbcczT (Python)