假设我有一个未知大小的列表,那么我可以使用以下命令访问最后一个元素:
>>> l = list(range(10))
>>> l[-1]
9
但是,有什么办法可以通过像这样的切片对象来做到这一点
>>> s = slice(-1, 10)
>>> l[s]
[9]
不知道我的名单长度吗?
编辑:
我简化了我的问题。我可以重新获得列表,因为以后我会遍历子列表。除了能够获取第二个元素等等,我只需要一种获取列表的最后一项的方法……
答案 0 :(得分:8)
是的,只需使用None
作为end
参数:
In [53]: l[slice(-1, None)]
Out[53]: [9]
这当然会产生列表[9]
,而不是问题中的9
,因为切片列表总是会产生子列表,而不是裸元素。
答案 1 :(得分:1)
如果您的目标是传递可用于索引列表的参数,则可以使用operator.itemgetter
:
from operator import itemgetter
L = range(10)
itemgetter(-1)(L) # 9
我认为,对于此特定任务,itemgetter
比通过切片提取列表然后提取列表的唯一元素更干净。
还请注意,这不仅适用于列表,还适用于更广泛的对象。与上面的range
一样。
答案 2 :(得分:0)
如果要访问列表的最后一个元素:
n = int(input())
user_input = [int(input) for i in range(n)]
last_element = user_input[-1]
这里我们在列表中使用了负索引概念。