問題如題,求陣列的所有子集,如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,然後輸出 第二種語 ...