给出一个清单:
l1 = [0, 211, 576, 941, 1307, 1672, 2037]
获取列表最后一个元素的索引的最pythonic方法是什么。鉴于Python列表是零索引的,它是:
len(l1) - 1
或者,以下是使用Python的列表操作:
l1.index(l1[-1])
两者都返回相同的值,即6。
答案 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