给定一个整数数组,可能包含重复元素,返回所有可能的子集python
时间: 2024-09-26 13:08:04 浏览: 33
python 实现给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)
5星 · 资源好评率100%
在Python中,我们可以使用递归和生成器函数的方式来解决这个问题,通常称为“组合”或“子集生成”。这里是一个常见的解决方案,利用了itertools模块中的combinations_with_replacement()函数:
```python
from itertools import combinations_with_replacement
def find_subsets(nums):
def generate_subsets(current_set, start_index):
if start_index == len(nums):
yield current_set
else:
for i in range(start_index, len(nums) + 1): # 包含重复元素
yield from generate_subsets(current_set + [nums[i]], i+1)
nums = list(set(nums)) # 去除重复元素,因为combinations_with_replacement默认会考虑重复元素
return [list(subset) for subset in generate_subsets([], 0)]
# 示例
nums = [1, 2, 2]
subsets = find_subsets(nums)
print("所有可能的子集:", subsets)
阅读全文