【发布时间】:2017-09-11 23:53:29
【问题描述】:
我正在尝试创建一个包装生成器函数的类,以便我可以从生成器中批量获取预定义大小的项目。
即如果我有一个包含 10 个随机数的列表并指定一个小批量为 2,我希望得到 5 个 2 个数字的元组。
我将以下包装类编写到生成器函数中,希望它能完成这项工作:
import random
class multiple_lottery_draws(object):
def __init__(self, num_draws):
self.num_draws = num_draws
print("Initialized % draws"%self.num_draws)
def my_lottery(self):
# returns 9 numbers between 1 and 100
for i in range(10):
yield random.randint(1, 100)
# returns a 10th number between 1000 and 2000
yield random.randint(1000,2000)
def __iter__(self):
data = []
for i in range(self.num_draws):
data.append(next(iter(self.my_lottery())))
yield data
two_draws = multiple_lottery_draws(2)
然而,虽然生成器本身工作得很好,
for i in two_draws.my_lottery(): print i
# prints: 52,12,61,67,30,78,84,90,69,31,1069
如果我尝试从包装类中获取小批量,我只会得到 1 个项目
for i in two_draws: print i
# prints: [74, 95]
我做错了什么?
【问题讨论】: