切片分配修改原始列表

时间:2013-05-26 09:56:17

标签: python

有这段代码:

a = [1, 2, 3, 4, 5]
a[:] = [] # and now a is also empty

语句a[:]在我阅读时会创建列表a的副本,因此如果为列表分配了空列表[],那么为什么原始对象也会被修改?

2 个答案:

答案 0 :(得分:5)

x = a[:]使x成为包含与a

相同值的新列表

a[:] = x使现有列表a包含与x相同的值

当切换等于的边时,表达式的行为会发生变化。

答案 1 :(得分:4)

  

语句a[:]在我阅读时创建了列表a的副本

除非你不读书,否则你正在写作。切片分配的工作方式不同,因为它用序列替换切片​​。