
解答
class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        res=[[]]
        for i in nums:
            res+=[[i]+num for num in res]
        return res
代码解释
这段代码定义了一个名为Solution的类,并在其中定义了一个名为subsets的方法。该方法接受一个整数列表nums作为输入,并返回该列表的所有可能子集。
-  初始化结果列表: res = [[]]。开始时,结果列表res只包含一个空集,因为空集是任何集合的子集。
-  遍历输入列表: for i in nums:。对于输入列表nums中的每一个元素i,都会执行一次循环。
-  构建新子集: res += [[i] + num for num in res]。在每次循环中,都会生成一个新的子集列表,该列表由两部分组成:- 当前元素i单独作为一个新子集(但实际上它会被加到一个空集[]前面,所以实际上还是[i])。
- 将当前元素i添加到res中的每一个现有子集的开头,形成一个新的子集。
 这里使用了列表推导式 [i] + num for num in res,它遍历了res中的所有现有子集num,并将i与每个num组合成一个新的子集。
- 当前元素
-  更新结果列表: res += ...。每次循环后,新的子集列表都会与原始res列表合并,更新res以包含所有新的子集。
-  返回结果:当遍历完 nums中的所有元素后,res将包含nums的所有可能子集,包括空集和nums自身。最后返回这个列表。
例子
假设我们有以下输入:
nums = [1, 2]
以下是subsets方法的执行步骤和生成的子集列表:
-  初始化结果列表: res = [[]]此时 res是:[[]]
-  遍历第一个元素 1:添加 1到每个现有子集中(目前只有一个空集):res = [[]] + [[1] + []]此时 res是:[[], [1]]
-  遍历第二个元素 2:添加 2到每个现有子集中:res = [[], [1]] + [[2] + [], [2] + [1]]此时 res是:[[], [1], [2], [1, 2]]
-  返回结果列表。 
所以,对于输入nums = [1, 2],subsets方法将返回:
[
    [], 
    [1], 
    [2], 
    [1, 2]
]
这个列表包含了nums的所有可能子集。



















