7

以免说你想要 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]

我有点惊讶……

4

3 回答 3

14

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

于 2009-03-25T11:15:40.187 回答
9

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

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

于 2009-03-25T11:17:16.657 回答
3

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

IE

list2 = list1[:]

相当于

import copy
list2 = copy.copy(list1)
于 2009-03-25T11:34:54.913 回答