获取数组最后一个索引的时间复杂度是多少?

ana*_*nya 3 python python-2.7 python-3.x

array = ["A", "B", "C", "D"]
Run Code Online (Sandbox Code Playgroud)

对于给定的数组,它需要O(1)指向第一个索引,即 0。因此,如果我输入array[0],它需要O(1)指向"A"。但是如果我写array[-1]which指向最后一个索引3。它是否会迭代整个数组以获取最后一个索引,或者它知道数组默认以索引3结束?换句话说,array[-1]在python中是如何实现的?

Rie*_*tty 7

访问任何数组元素都是在恒定时间内,因为它是由内存位置(即指针)已知的。

该数组不需要遍历先前的元素来访问第 n 个元素(即,它不像链表)。所有元素的位置事先已知,并且可以直接访问。

感谢评论更新。

array[-x]是 的语法糖array[len(lst) - x]。所以它仍然是对指针的简单常量访问,并且不需要时间。

您可以查看此答案以获取更多信息。虽然是关于C的,但是概念应该是相同的。