首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从Python迭代器获取最后一项的最简洁方法

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

Stack Overflow用户
提问于 2010-01-26 10:53:08
回答 14查看 66.6K关注 0票数 135

在Python2.6中,从迭代器中获取最后一项的最佳方法是什么?例如,假设

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
my_iter = iter(range(5))

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[x for x in my_iter][-1]
EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2010-01-26 10:56:43

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
item = defaultvalue
for item in my_iter:
    pass
票数 118
EN

Stack Overflow用户

发布于 2018-01-12 19:07:18

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
*_, last = iterator # for a better understanding check PEP 448
print(last)

如果您使用的是python 2.7:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
last = next(iterator)
for last in iterator:
    continue
print last

旁注:

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from collections import deque

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

dd = deque(aa, maxlen=1)
last_element = dd.pop()
票数 107
EN

Stack Overflow用户

发布于 2010-07-02 23:39:12

使用大小为1的deque

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from collections import deque

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

dd = deque(aa, maxlen=1)
last_element = dd.pop()
票数 76
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2138873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文