Python 中的子集
pythonserver side programmingprogramming更新于 2025/11/22 16:44:17
假设我们有一组数字;我们必须生成该集合的所有可能子集。这也称为幂集。因此,如果集合为 [1,2,3],则幂集将为 [[], [1], [2], [3], [1,2], [1,3], [2,3], [1,2,3]]
让我们看看步骤 −
- 我们将使用递归方法解决这个问题。因此,如果递归方法名称称为solve(),并且它采用数字集(nums)、临时集(temp)、res和index
- solve()函数将像下面这样工作−
- 如果index = nums的长度,则创建一个与temp相同的列表,并插入res并返回
- temp [index]:= 0
- solve(nums,temp,res,index + 1)
- temp [index]:= 1
- solve(nums,temp,res,index + 1)
- 主函数将像下面这样−
- res:=一个空列表
- 创建与nums大小相同的临时列表,并用0填充
- 调用solve(nums,temp,res, 0)
- main_res := 一个空列表
- 对于 temp_res 中的所有列表
- temp := 空列表
- 对于 i := 0 到列表的长度
- 如果 lists[i] = 1,则将 nums[i] 插入到 temp 中
- 将 temp 插入到 main_res 中
- 返回 main res
让我们看看下面的实现以便更好地理解 −
示例
class Solution(object): def subsets(self, nums): temp_result = [] self.subsets_util(nums,[0 for i in range(len(nums))],temp_result,0) main_result = [] for lists in temp_result: temp = [] for i in range(len(lists)): if lists[i] == 1: temp.append(nums[i]) main_result.append(temp) return main_result def subsets_util(self,nums,temp,result,index): if index == len(nums): result.append([i for i in temp]) #print(temp) return temp[index] = 0 self.subsets_util(nums,temp,result,index+1) temp[index] = 1 self.subsets_util(nums, temp, result,index + 1) ob1 = Solution() print(ob1.subsets([1,2,3,4]))
输入
[1,2,3,4]
输出
[[], [4], [3], [3, 4], [2], [2, 4], [2, 3], [2, 3, 4], [1], [1, 4], [1, 3], [1, 3, 4], [1, 2], [1, 2, 4], [1, 2, 3], [1, 2, 3, 4]]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

