从Python 2.6的迭代器中获取最后一项的最佳方法是什么?例如说my_iter = iter(range(5))什么是获得的最短码/干净的方式4从my_iter?我可以做到这一点,但效率似乎并不高:[x for x in my_iter][-1]
3 回答

猛跑小猪
TA贡献1858条经验 获得超8个赞
使用deque大小为1的。
from collections import deque
#aa is an interator
aa = iter('apple')
dd = deque(aa, maxlen=1)
last_element = dd.pop()

www说
TA贡献1775条经验 获得超8个赞
如果您使用的是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
注意:
通常上面提出的解决方案是,你需要定期的情况是什么,但如果你是在处理大数据量,这是更有效地使用一个deque大小1.(的来源)
from collections import deque
#aa is an interator
aa = iter('apple')
dd = deque(aa, maxlen=1)
last_element = dd.pop()
添加回答
举报
0/150
提交
取消