如何分配python列表片Pythondoc说切片列表会返回一个新的列表。现在,如果返回一个“新”列表,我对“片上分配”有以下疑问a = [1, 2, 3]a[0:2] = [4, 5]print a现在的输出是:[4, 5, 3]返回某物的东西怎么会出现在表达的左边。是的,我读了文档,它说这是可能的,现在,既然切片一个列表返回一个“新”列表,为什么原始列表被修改,我无法理解背后的机制。
3 回答

拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
您混淆了两个使用非常相似语法的不同操作:
1)切片:
b = a[0:2]
a
b
.
2)切片分配:
a[0:2] = b
a
b
.

慕后森
TA贡献1802条经验 获得超5个赞
如果分配的左边是订阅,Python将调用 __setitem__
在那个物体上。 a[i] = x
等于 a.__setitem__(i, x)
.如果赋值的左边是片,Python也会调用 __setitem__
,但有不同的论点: a[1:4]=[1,2,3]
等于 a.__setitem__(slice(1,4,None), [1,2,3])
添加回答
举报
0/150
提交
取消