在Python2.6中,从迭代器中获取最后一项的最佳方法是什么?例如,假设
my_iter = iter(range(5))
从my_iter
获取4
的最短代码/最简洁的方法是什么
我可以这样做,但似乎效率不是很高:
[x for x in my_iter][-1]
发布于 2010-01-26 10:56:43
item = defaultvalue
for item in my_iter:
pass
发布于 2018-01-12 19:07:18
如果您使用的是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()
发布于 2010-07-02 23:39:12
使用大小为1的deque
。
from collections import deque
#aa is an interator
aa = iter('apple')
dd = deque(aa, maxlen=1)
last_element = dd.pop()
https://stackoverflow.com/questions/2138873
复制相似问题