我试图创建一个类来包装生成器函数,这样我就可以批量地从生成器中获取预定义大小的项。在
也就是说,如果我有一个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)
不过,虽然发电机本身工作正常
^{pr2}$如果我试图从包装类获取小批量,我只得到一个项目
for i in two_draws: print i
# prints: [74, 95]
我做错什么了?在
您只调用
yield
一次。试试这样的方法:请注意,在
my_lottery
中,您调用yield
10次(在循环中),它产生10个值。但是在__iter__
中,只调用yield
一次,因此只产生一批值。在相关问题 更多 >
编程相关推荐