首页 > 解决方案 > 以最 Pythonic 的方式仅获取迭代器的最后一个元素

问题描述

如何获取迭代器的最后一个元素?我知道我必须用尽迭代器并返回它产生的最后一个值,所以简单的方法是:

def last(it):
    for value in it:
        pass
    return value

(你可能想抓住NameError并提出其他的空输入,但你明白了。)

有没有我没有想到的更简单的解决方案,例如使用itertools.islice()(虽然它似乎不接受负索引)或类似的东西?

标签: pythoniterator

解决方案


一个更简单的解决方案可能是使用Extended Iterable Unpacking

*_, last = it

例子:

it = range(10)
*_, last = it
print(last)
# 9

推荐阅读