如何在python中获取列表的最后一个元素?

时间:2018-12-04 19:02:42

标签: python arrays python-3.x

我知道li可以访问列表的最后一个元素li[-1],但是它在后台如何工作?与li[len(li) - 1]

是否相同

还有其他方法可以获取列表的最后一个元素,而实际上不知道列表的长度吗?我正在从效率的角度考虑这个问题,因此,如果存在其他麻烦的解决方案,请提出其他建议。

3 个答案:

答案 0 :(得分:1)

您可能想阅读以下内容:

https://docs.python.org/2/faq/design.html#how-are-lists-implemented-in-cpython

它说,

  

CPython的列表实际上是可变长度数组,而不是Lisp样式   链表。该实现使用连续的引用数组   指向其他对象,并保持指向该数组和该数组的   列表头结构中的长度。

这就是为什么推荐li[-1]且最有效的原因。

答案 1 :(得分:0)

li [-1]是最快且更Python化的方法。

您可以使用li [-n]从头开始获取 nth 元素,它只是按索引访问,实际上比li [len(li)-1 ]。

如果您在python中有一个列表,则给出长度,因此li [1]与li [-1]的工作方式相同。

答案 2 :(得分:0)

来自docs

  

形式语法没有对负索引中的特殊规定   顺序;但是,内置序列均提供 getitem ()   通过添加长度来解释负索引的方法   到索引的顺序(以便x [-1]选择x的最后一项)。

是的,它在内部确实像-1 + len(li)

但是,这是踢脚线。 len是constant time/O(1) operation,与列表的长度无关。因此,负索引确实有效,并且确实是应该访问元素的正确方法。这就是为什么它在那里的原因。