首页 > 解决方案 > 无法将值附加到 Python 中 Leetcode 上不同函数的列表中

问题描述

嘿伙计们,我要做的只是将列表附加到列表中,但由于某种原因它无法附加正确的值。这是我的代码:

class Solution(object):

def subsets(self, nums):
    """
    :type nums: List[int]
    :rtype: List[List[int]]
    """
    mylist = [] 
    nums.sort()
    self.helper(mylist, [], nums, 0)
    return mylist

def helper(self, mylist, templist, nums, start):

    mylist.append(templist)
    print(templist)
    for i in range(start, len(nums)):
        templist.append(nums[i])
        self.helper(mylist, templist, nums, i + 1)
        templist.pop()

templist 打印出正确的输出,如下所示:

[]
[1]
[1, 2]
[1, 2, 3]
[1, 3]
[2]
[2, 3]
[3]

到控制台,但 mylist 只是根据 leetcode 返回一个空列表列表,如下所示:

[[],[],[],[],[],[],[],[]]

我不知道为什么。如果有人可以提供帮助,那就太好了!

标签: pythonlist

解决方案


因为您将相同的列表传递给您的递归调用。这根本不是暂时的。传递一个副本,或显式创建一个副本:

def helper(self, mylist, templist, nums, start):
    templist = templist.copy()
    mylist.append(templist)
    ....

推荐阅读