python - 从 Python 迭代器获取最后一项的最简洁方法

标签 python iterator

在 Python 2.6 中从迭代器中获取最后一项的最佳方法是什么?例如,说

my_iter = iter(range(5))

my_iter 获取 4 的最短代码/最简洁的方法是什么?

我可以这样做,但似乎效率不高:

[x for x in my_iter][-1]

最佳答案

如果您使用的是 Python 3.x:

*_, last = iterator # for a better understanding check PEP 448
print(last)

如果您使用的是 python 2.7:

last = next(iterator)
for last in iterator:
    continue
print last


旁注:

通常,上述解决方案是您在常规情况下所需要的,但如果您要处理大量数据,使用大小为 1 的 deque 会更有效。 ( source )

from collections import deque

#aa is an interator
aa = iter('apple')

dd = deque(aa, maxlen=1)
last_element = dd.pop()

关于python - 从 Python 迭代器获取最后一项的最简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2138873/

相关文章:

python - 在 python 中 os.chdir() 不使用相对路径

python - 当 'groupby' ing by weekofyear 时出现奇怪的结果

python - 将 .strip() 用于二维列表

angular - 类型 'HTML Collection' 必须有一个 '[Symbol.iterator]()' 方法返回指令中的迭代器

iterator - Rust 中是否有等同于 Java 的 Stream.Iterate 的函数?

Python 3.6 datetime.fromtimestamp 在给定 0 时抛出错误

python - 我需要在我的程序中输入一些错误处理

python - 使用一维作为循环中的迭代器剩余维度迭代 3D numpy

c++ - 使用迭代器连接 vector 中的元素

c++ - 如何防止迭代器超出范围?