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

时间:2009-03-25 11:11:46

标签: python list slice

不要说你想要python列表的最后一个元素:

之间有什么区别
myList[-1:][0]

myList[len(myList)-1]

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

>>> list = [0]
>>> list[-1:][0]
0
>>> list[-1:][0] += 1
>>> list
[0]
>>> list[len(list)-1] += 1
>>> list
[1]

我有点惊讶......

3 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:9)

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

无论如何,你知道你可以使用list[-1]做同样的事情,对吗?

答案 2 :(得分:3)

切片创建副本(浅拷贝)。它通常用作浅拷贝习语。

list2 = list1[:]

相当于

import copy
list2 = copy.copy(list1)