
左边是题目右边是正确的代码,我想请问一下为什么append里面一定要用切片呢?
谢谢大家
- 不用切片用单纯索引的话只能append一个元素
- 如果你是想把整个列表添加进去,可以不加切片的话,这里相当于深拷贝,添加了path之后,如果后面path被改变,那么之前添加的path也会改变,进而影响res;而使用切片,相当于浅拷贝,添加到res的path在后续被改变了也不会影响res
简单的例子:
l = [1,2]
a = [l]
print(a)
l.append(3)
print(a)
该代码的输出结果为:
[[1, 2]]
[[1, 2, 3]]

path 一直在变化, [:] 就是复制一份副本出来, 如果不复制副本, res数据会有变化,得不到想要得结果。