微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在给定次数后停止 Python 迭代器/生成器

如何解决在给定次数后停止 Python 迭代器/生成器

我有一个包含很多元素的生成器,比如说

long_generator = (i**2 for i in range(10**1000))

我想提取一个 n 元素(直到最后都没有明显地解析生成器):什么 pythonic 方法可以做到这一点?

函数 iter 的第二个参数是基于返回值的标记

numbers = iter(lambda:next(long_generator),81)  # but this assumes we kNow the results

那么会不会有一个基于“迭代”次数的等价物?

解决方法

我想出了以下功能:

def first_elements(iterable,n:int):
    """Iterates over n elements of an iterable"""
    for _ in range(n):
        yield next(iterable)

您可以获得如下列表:first_10 = list(first_elements(long_generator,10))

是否有一些内置的或更好/更优雅的方式?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。