从发电机获取固定数量的物品

tau*_*ran 6 python generator

从发电机获取固定数量的物品的最有效方法是什么?

我目前所做的是使用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
Run Code Online (Sandbox Code Playgroud)

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

eum*_*iro 6

用途itertools.islice:

import itertools

for elem in itertools.islice(f(), 3):
    print elem
Run Code Online (Sandbox Code Playgroud)

并直接进入你的numpy数组:

my_arr = np.array(itertools.islice(f(), 3))
Run Code Online (Sandbox Code Playgroud)