Python 转到生成器中的特定迭代

Python go to specific iteration in generator

我正在寻找一种方法来导航到生成器对象中的特定迭代。

我有一个遍历 JSON 个对象列表的生成器对象。我没有一次加载所有这些对象,而是创建了一个生成器,以便每个 JSON 对象仅在每次迭代时加载。

def read_data(file_name):
    with open(file_name) as data_file:
        for user in data_file:
            yield json.loads(user)

但是,现在我正在寻找某种方法来导航到第 n 次迭代以检索有关该用户的更多数据。我能想到的唯一方法是遍历生成器并在第 n 个枚举处停止:

n = 3
data = read_data(file_name)
for num, user in enumerate(data):
    if num == n:
        <retrieve more data>

有更好的方法吗?

应该这样做:

from itertools import islice

def nth(iterable, n, default=None):
    "Returns the nth item or a default value"
    return next(islice(iterable, n, None), default)

这是众多 useful utilities included in the itertools documentation 之一。