python - 追加列表与追加列表的区别[:]
问题描述
我正在尝试使用 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
解决方案
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]]
推荐阅读
- apache-spark - 使用 pyspark 内核启动 Spark 应用程序时出现 jupyter notebook 错误
- angular - 使用 ng-swagger-gen 生成枚举
- java - GraphQL Java 未正确检测 kotlin 枚举
- sql - 按国家/地区选择每年 SQL
- python - 我无法从 python 中的泡沫中提取数据
- swift - 尝试在 UIScrollview 中设置宽图像,高度固定
- react-native - 如何在没有 .on() 事件的情况下从 React Native 上的实时数据库获取数据?
- r - 如何在 R 中编写循环?
- java - 视图的通用动画覆盖轴不起作用
- vector - 找到运算符“=”的“0”定义,无法确定“=”的确切重载匹配定义