练习一些python,这是一种非常容易掌握的语言。
我有
>>> L = [1,2,3,4]
>>> L[1:1] = [1,2,3]
>>> L
[1, 1, 2, 3, 2, 3, 4]
所以在第二行实际上L[1:1]
是空列表,但是python如何理解从[1,2,3]
开始插入1
列表。我猜有一些内部对我们来说不透明,显然,我猜L[1:1]
会返回对索引1
的引用,即使它返回一个空列表...
祝福, 了Umut
答案 0 :(得分:5)
L[1:1]
表示从索引1(第二个元素)开始的列表L
的切片,最多但不包括索引1.因此它是一个空列表。在作业的右侧,它只是一个匿名的空列表。但是在左侧,赋值知道切片的位置,并且可以将新列表值拼接到适当的位置。
答案 1 :(得分:3)
切片的行为取决于它是否在表达式的左侧或右侧。当它在左侧时,它不会返回一个列表 - 相反,它表现为一个切片对象,它更了解切片并具有专门覆盖的赋值以作为插入操作。
答案 2 :(得分:1)
官方的Python Tutorial在我看来解释得最好。 Chapter 3.1.2的结尾包含以下图表:
+---+---+---+---+---+
| H | e | l | p | A |
+---+---+---+---+---+
0 1 2 3 4 5
这说明您可以将索引视为指向BETWEEN元素。因此,在此图示中,如果指定切片[1:1]
,则实际上是指H
和e
之间的空格,但不包括它们。
如果您想覆盖H
和e
,则需要指定切片[0:2]
。