这次的题目目的是给出一个list下的所有子集,可以看到一个递归规律就是新加一个数的新增量都是在原有的数的每一位都加上了新增量。也就是知道了前面的结果,就知道了新增的部分。代码如下:
class Solution(object):
def subsets(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
def ppend(list1, n):
if list1 == []:
return [n]
else:
#需要一个新的变量来承载list1,不可直接用 = 方法,会导致改变原有的值
m = []
for i in list1:
m.append(i)
m.append(n)
return m
nums = sorted(list(set(nums)))
listall = [[]]
if nums == []:
return listall
else:
for i in nums:
for j in range(len(listall)):
listall.append(ppend(listall[j],i))
return listall