python 向列表中添加为什么总是空列表??

一个集合中没有重复元素,求该集合的所有子集。求集合的所有子集问题。题目要求子集中元素非递减序排列,因此我们先要对原来的集合进行排序。原集合中每一个元素在子集中有两种状态:要么存在、要么不存在。这样构造子集的过程中每个元素就有两种选择方法:选择、不选择,因此可以构造一颗二叉树,最后得到的叶子节点就是子集。。下面是Python代码,出现的问题用注释标出来了,如下:
class Solution(object):
def subsets(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
self.sub_sets=[]
self.sub_set=[]
nums.sort()
self.dfs(nums,0)
return self.sub_sets

def dfs(self,nums,index):
    if index==len(nums):
        print self.sub_set #此处能够输出正确结果
        self.sub_sets.append(self.sub_set)#向列表中添加子集时,为啥加入的总是[]?????
        return 
    #选择nums[index]
    self.sub_set.append(nums[index])
    self.dfs(nums,index+1)
    #不选择nums[index]
    self.sub_set.pop()
    self.dfs(nums,index+1)

s=Solution()
l=[1,2,3]
print s.subsets(l)
运行结果如下:
[1, 2, 3]
[1, 2]
[1, 3]
[1]
[2, 3]
[2]
[3]
[]
[[], [], [], [], [], [], [], []] #此处为什么全是空列表??在添加之前明明能够正常输出的!求解释。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问