使用切片获取未知大小列表的最后一个元素

时间:2018-06-26 08:18:20

标签: python python-3.x list slice

假设我有一个未知大小的列表,那么我可以使用以下命令访问最后一个元素:

>>> l = list(range(10))
>>> l[-1]
9

但是,有什么办法可以通过像这样的切片对象来做到这一点

>>> s = slice(-1, 10)
>>> l[s]
[9]

不知道我的名单长度吗?

编辑:

我简化了我的问题。我可以重新获得列表,因为以后我会遍历子列表。除了能够获取第二个元素等等,我只需要一种获取列表的最后一项的方法……

3 个答案:

答案 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]

这里我们在列表中使用了负索引概念。

相关问题