一尘不染

赋值如何与Python列表切片一起工作?

python

Python文档说切片列表会返回一个新列表。
现在,如果返回了“新”列表,我将对“分配给切片”存在以下疑问

a = [1, 2, 3]
a[0:2] = [4, 5]
print a

现在的输出将是:

[4, 5, 3] 
  1. 返回内容的内容如何出现在表达式的左侧?
  2. 是的,我阅读了文档,并说有可能,因为切片列表返回“新”列表,为什么要修改原始列表?我无法理解其背后的机制。

阅读 345

收藏
2020-02-12

共1个答案

一尘不染

你混淆了两个使用非常相似的语法的不同操作:

1)切片:

b = a[0:2]

这将复制的切片a并将其分配给b。

2)切片分配:

a[0:2] = b

这将a用的内容替换的切片b

尽管语法相似(我想是通过设计实现的!),但这是两个不同的操作。

2020-02-12