【问题标题】:Stopping a Python iterator/generator after a given number of times在给定次数后停止 Python 迭代器/生成器
【发布时间】:2021-07-21 10:10:58
【问题描述】:

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

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

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

【问题讨论】:

标签: python iterator


【解决方案1】:

我想出了以下功能:

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))

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-20
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    相关资源
    最近更新 更多