python求非空子集
时间: 2023-11-17 16:03:57 浏览: 161
Python实现的频繁项集挖掘Apriori算法
以下是使用Python求一个集合的所有非空子集的方法:
```python
def get_subsets(s):
subsets = []
size = len(s)
for i in range(1, 2**size):
flag = bin(i)[2:].zfill(size)
subset = [s[j] for j in range(size) if flag[j] == '1']
subsets.append(subset)
return subsets
```
其中,参数`s`为原集合,返回值为一个列表,包含了原集合的所有非空子集。
方法说明:
1. 首先计算出原集合的大小,即元素个数。
2. 然后从1到2^size-1枚举所有可能的子集,其中0代表不选取,1代表选取。
3. 对于每个二进制数,将其转换为字符串,并在前面补0,使其长度为size。
4. 根据二进制数的每一位,选取或不选取原集合中对应的元素,得到一个子集。
5. 将得到的子集添加到结果列表中。
6. 最后返回结果列表。
阅读全文