列表[-1:] [0]和列表[len(list)-1]之间的区别是什么?

c0m*_*0m4 7 python list slice

以免你想要python列表的最后一个元素:它们之间有什么区别

myList[-1:][0]
Run Code Online (Sandbox Code Playgroud)

myList[len(myList)-1]
Run Code Online (Sandbox Code Playgroud)

我以为没有区别,但后来我尝试了这个

>>> list = [0]
>>> list[-1:][0]
0
>>> list[-1:][0] += 1
>>> list
[0]
>>> list[len(list)-1] += 1
>>> list
[1]
Run Code Online (Sandbox Code Playgroud)

我有点惊讶......

not*_*row 14

如果使用切片[-1:],则返回的列表是浅拷贝,而不是引用.所以[-1:] [0]修改新列表.[len(list)-1]是对最后一个对象的引用.


Mag*_*off 9

list[-1:]创建一个新列表.要获得与list[len(list)-1]返回某种视图相同的行为list,但正如我所说,它会创建一个新的临时列表.然后,您继续编辑临时列表.

无论如何,你知道你可以用list[-1]同样的东西,对吧?