Python中列表的切片

6
我是一名新手,希望有人能告诉我这两段代码输出结果的区别:

1.

>> example = [1, 32, 1, 2, 34]
>> example[4:0] = [122]
>> example
[1, 32, 1, 2, 122, 34]

2.

>> example = [1, 32, 1, 2, 34]
>> example[4:1] = [122] 
>> example
[1, 32, 1, 2, 122, 34]

我非常确定代码块的第一行和第三行都不是有效的Python代码,除非你定义了一个至少有123个元素的列表等示例。 - Marcus Müller
1
提示:example[4:0]返回什么?example[4:1]呢?还有example[4:5]?首先要理解切片的工作原理,然后才能推断为什么你的赋值会做同样的事情。 - Vincent Savard
谢谢大家...终于明白了切片的概念。 - kanishka
2个回答

5
您的切片在索引4处返回一个空列表,因为上限小于下限:
>>> example[4:0]
[]

>>> example[4:1]
[]

这个空列表将被你的列表[122]替换。效果与执行以下代码相同:

 >>> example.insert(4, 122)

只需记住,空列表和只有一个元素的列表并没有什么特殊之处,尽管它们在使用时产生的影响一开始并不那么明显。Python教程中有更多细节。


1
@kanishka 这个回答解决了你的问题吗? - Mike Müller

1
这里没有任何问题。输出结果相同,因为两个代码片段中唯一不同的一行是


example[4:0] = [122]

并且

example[4:1] = [122]

他们都会将值122添加并赋给索引4处的元素(我假设这里列表大小为1 == 值)。由于切片上边界的数字在两种情况下都小于四,因此它们没有任何影响。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接