【发布时间】:2018-11-16 07:33:56
【问题描述】:
我正在尝试从输入生成器函数创建批次列表,但它没有产生我期望的列表。
def batch_generator(items, batch_size):
new = []
i = 0
for item in items:
new.append(item)
i += 1
print('new: ', new, i)
if i == batch_size:
print('i = batch')
i = 0
yield new
new = []
def _test_items_generator():
for i in range(10):
yield i
print(list(map(lambda x: len(x),
batch_generator(_test_items_generator(), 3))))
我试图让输出为 [[0, 1, 2], [3, 4 ,5], [6, 7, 8], [9]] 产量似乎正在发送 batch_size 而不是新列表中的信息。试图让我的头脑了解这些生成器是如何工作的!
【问题讨论】:
-
你能修正你的代码缩进吗?
-
据我所知,您只需要在
batch_generator函数的底部添加if new: yield new即可。