看板 Python 關於我們 聯絡資訊
版友均有點出邏輯關鍵,另補充以下寫法,直接反應子集數量呈倍數成長 ------------------------------------------------ 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://www.ptt.cc/bbs/Python/M.1670045006.A.6E0.html
OnoderaHaru: 推這篇 剛發現自己的方法的執行時間太長 12/03 14:10
ddavid: 這個簡潔但缺點就是需要完整空間把結果存下來 12/05 12:36
rebe212296: 謝謝,請問[]裡面的加號代表的意思 12/08 09:55
papple23g: +[ ] 作用類似於 .extend() 12/08 12:40