做回溯练习的时候发现的一个问题就是result.append(path)与result.append(path[:])的区别,下面就来看看他们有什么区别吧!
代码1:

path=[1,2]
result=[]
result.append(path)
print(result)
path.append(3)
result.append(path)
print(result)
path.pop()
path.pop()
print(result)

运行结果:

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

代码2:

path=[1,2]
result=[]
result.append(path[:])
print(result)
path.append(3)
result.append(path[:])
print(result)
path.pop()
path.pop()
print(result)

运行结果:

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

总结:
result.append(path)就是把path的首地址添加过去,当path改变时,result也会改变。
result.append(path[:])就是剪切效果,把path的值一个个添加进去,所以当path改变时result的值不会改变。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐