从生成器中获取固定数量的项目

6

如何从生成器中高效地获取固定数量的项?

我目前使用 ziprange。在这个例子中,我从生成器中取出大小为 3 的块。

def f():
  x = 0
  while x < 21:
    yield x
    x += 1

g = f()

while True:
  x = [i for _, i in zip(range(3), g)]
  if not x:
    break
  print x

背景是我使用的数据库为查询结果提供了一个生成器对象。然后,我用数据填充了一个固定大小的numpy数组,并将其作为一个批次进行处理。

1个回答

6

使用itertools.islice

import itertools

for elem in itertools.islice(f(), 3):
    print elem

并直接转换为您的numpy数组:

my_arr = np.array(itertools.islice(f(), 3))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接