获取最后一个列表项索引的大多数pythonic方法

时间:2016-06-19 21:51:42

标签: python

给出一个清单:

l1 = [0, 211, 576, 941, 1307, 1672, 2037]

获取列表最后一个元素的索引的最pythonic方法是什么。鉴于Python列表是零索引的,它是:

len(l1) - 1

或者,以下是使用Python的列表操作:

l1.index(l1[-1])

两者都返回相同的值,即6。

3 个答案:

答案 0 :(得分:2)

只有第一个是正确的:

>>> lst = [1, 2, 3, 4, 1]
>>> len(lst) - 1
4
>>> lst.index(lst[-1])
0

然而,这取决于你的意思"最后一个元素的索引"。

请注意index必须遍历整个列表才能提供答案:

In [1]: %%timeit lst = list(range(100000))
   ...: lst.index(lst[-1])
   ...: 
1000 loops, best of 3: 1.82 ms per loop

In [2]: %%timeit lst = list(range(100000))
len(lst)-1
   ...: 
The slowest run took 80.20 times longer than the fastest. This could mean that an intermediate result is being cached.
10000000 loops, best of 3: 109 ns per loop

请注意,第一个时间段为纳秒,而毫秒为第一个时间。

答案 1 :(得分:2)

你应该使用第一个。为什么呢?

>>> l1 = [1,2,3,4,3]
>>> l1.index(l1[-1])
2

答案 2 :(得分:0)

Bakuriu的答案很棒!

此外,应该提到您很少需要此值。通常有其他更好的方法可以做你想做的事。将此答案视为旁注:)

如你所述,获取最后一个元素可以这样做:

lst = [1,2,4,2,3]
print lst[-1]  # 3

如果你需要迭代一个列表,你应该这样做:

for element in lst:
    # do something with element

如果您仍然需要索引,这是首选方法:

for i, element in enumerate(lst):
    # i is the index, element is the actual list element