在给定次数后停止 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))

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