【发布时间】:2011-01-09 11:31:00
【问题描述】:
在 Python 2.6 中从迭代器中获取最后一项的最佳方法是什么?例如,说
my_iter = iter(range(5))
从my_iter 获取4 的最短代码/最简洁的方法是什么?
我可以这样做,但似乎效率不高:
[x for x in my_iter][-1]
【问题讨论】:
-
迭代器假定您想要遍历元素而不是真正访问最后一个元素。是什么阻止您简单地使用 range(5)[-1] ?
-
@Frank - 我认为实际的迭代器比
iter(range(5))更复杂和/或更远和/或更难控制 -
@Frank:事实上,它实际上是一个提供迭代器的更复杂的生成器函数。我只是制作了这个示例,以便简单明了地发生了什么。
-
如果你想要迭代器的最后一项,你很可能做错了什么。但答案是,实际上没有任何更清洁的方法可以遍历迭代器。这是因为迭代器没有大小,事实上,可能永远不会结束,因此可能没有最后一项。 (当然,这意味着您的代码将永远运行)。所以挥之不去的问题是:为什么要迭代器的最后一项?
-
@Peter:请更新您的问题。不要将一堆 cmets 添加到您拥有的问题中。请更新问题并删除 cmets。
标签: python python-3.x python-2.7 iterator