首页 > 解决方案 > 追加列表与追加列表的区别[:]

问题描述

我正在尝试使用 DFS 遍历字符串并将其附加以突出显示该行。但是,如果我使用result.append(currlist)vs result.append(currlist[:]),结果就完全不同了。前者不行,这是为什么呢?

class Solution: 
       
    def dfs(self, start, s, currlist, result):
        if start >= len(s):
            result.append(currlist[:])  # <--
            return
        
        for end in range(start, len(s)):
            currlist.append(s[start:end+1])
            self.dfs(end+1, s, currlist, result)
            currlist.pop()
        
    def partition(self, s: str) -> List[List[str]]:
        result = []
        self.dfs(0, s, [], result)
        return result

标签: pythonpython-3.xlistcopy

解决方案


list[:]创建对象的副本

例子:

x = []
y = [0, 1]

x.append(y)
print(x)

y[0] = 2

print(x)

输出:

[[0, 1]]
[[2, 1]]
x = []
y = [0, 1]

x.append(y[:])
print(x)

y[0] = 2

print(x)

输出:

[[0, 1]]
[[0, 1]]

推荐阅读