为了账号安全,请及时绑定邮箱和手机立即绑定

如何分配python列表片

如何分配python列表片

凤凰求蛊 2019-06-25 15:00:42
如何分配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.

虽然语法是相似的(我可以想象!),但这是两个不同的操作。


查看完整回答
反对 回复 2019-06-25
?
慕后森

TA贡献1802条经验 获得超5个赞

我以前也遇到过同样的问题,这与语言规范有关。根据任务-报表,

  1. 如果分配的左边是订阅,Python将调用__setitem__在那个物体上。a[i] = x等于a.__setitem__(i, x).

  2. 如果赋值的左边是片,Python也会调用__setitem__,但有不同的论点:a[1:4]=[1,2,3]等于a.__setitem__(slice(1,4,None), [1,2,3])

这就是为什么‘=’左边的列表切片的行为有所不同。


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 326 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信