从Python迭代器获取最后一个元素的最简洁方法
在Python 2.6中,获取迭代器最后一个元素的最佳方法是什么?比如说,
my_iter = iter(range(5))
有没有什么简单又干净的方法可以从my_iter
中得到4
?
我可以这样做,但感觉效率不是很好:
[x for x in my_iter][-1]
14 个回答
89
使用一个大小为1的 deque
。
from collections import deque
# aa is an iterator
aa = iter('apple')
dd = deque(aa, maxlen=1)
last_element = dd.pop()
简短版本:
last_element, = deque(aa, 1)
160
如果你在使用 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
会更有效率。(来源)
from collections import deque
#aa is an interator
aa = iter('apple')
dd = deque(aa, maxlen=1)
last_element = dd.pop()
135
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能在使用某个特定的功能时,发现它并没有按照预期工作。这种情况下,通常需要仔细检查代码,看看是不是哪里出错了。
有时候,问题可能出在我们对某个概念的理解上。比如,可能我们没有完全理解某个函数是怎么工作的,或者它需要什么样的输入。这就需要我们去查阅相关的文档,或者向其他人请教,看看他们是怎么解决类似的问题的。
总之,遇到问题是很正常的,关键是要保持耐心,逐步分析,找到解决办法。
item = defaultvalue
for item in my_iter:
pass