问题如题,求数组的所有子集,如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']
======