遍歷陣列的所有子集

2021-09-28 14:08:47 字數 1500 閱讀 2903

問題如題,求陣列的所有子集,如items = [1, 2, 3, 4, 5],求所有items的子集

方法一:二進位制,思想是n個元素的所有自己有2**n個,而n 位數的二進位制數剛好也有2 ** n個,遍歷n位數的所有二進位制排序,0代表存在,1代表不存在

def powersetbinary(items):

n = len(items)

s = np.array(items)

for i in range(2**n):

e = list(bin(i))[2:]

print('before e:', e)

e = np.array(e) == '1'

print('********************===')

print('after e:', e)

print(s[n-len(e):][e])

部分結果如下,選出來結果為true的元素 

before e: ['0']

********************===

after e: [false]

before e: ['1']

********************===

after e: [ true]

[5]before e: ['1', '0']

********************===

after e: [ true false]

[4]before e: ['1', '1']

********************===

after e: [ true true]

[4 5]

before e: ['1', '0', '0']

********************===

after e: [ true false false]

[3]

方法二:遍歷  思想:元素每增加乙個,子集為新加的元素與原來子集的組合再加上原來的子集

item為1時 子集為[,[1]]

item為[1,2]時  新的子集為原來的子集+[2]  即[[2],[1,2]],在加上原來的子集[,[1]],以此類推

def powersetrecursive(items):

result =

for x in items:

result.extend([subset + [x] for subset in result])

print('*****===', result)

print(result)

return result

部分結果為

*****=== [, [1]]

*****=== [, [1], [2], [1, 2]]

*****=== [, [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]

python遍歷陣列

os.file split e python python25 lib os.pyc os.path.split os.file e python python25 lib os.pyc var myarr array new array one two three var mystr string...

Jquery遍歷陣列

each 方法 ul li input checked each function i,el 在乙個列表中,迴圈每一項用each是不錯的,索引,元素都給遍歷出來。each 方法 1.處理一維陣列,如下 each a b c function i,el 控制台輸出 0 a 1 b 2 c 2.處理二維...

遍歷陣列元素

遍歷陣列元素也就是把每個元素輸出出來.第一種語法 foreach arr as val ue value value value是自己定義的,陣列中每個元素的值給val ue,然 後輸出第 二種語法 for each value,然後輸出 第二種語法 foreach value,然後輸出 第二種語 ...