题目:
Write the generator function make_generators_generator
, which takes a zero-argument generator function g
and returns a generator that yields generators. For each element e
yielded by the generator object returned by calling g
, a new generator object is yielded that will generate entries 1 through e
yielded by the generator returned by g
.
1 def make_generators_generator(g): 2 """Generates all the "sub"-generators of the generator returned by 3 the generator function g. 4 5 >>> def every_m_ints_to(n, m): 6 ... i = 0 7 ... while (i <= n): 8 ... yield i 9 ... i += m 10 ... 11 >>> def every_3_ints_to_10(): 12 ... for item in every_m_ints_to(10, 3): 13 ... yield item 14 ... 15 >>> for gen in make_generators_generator(every_3_ints_to_10): 16 ... print("Next Generator:") 17 ... for item in gen: 18 ... print(item) 19 ... 20 Next Generator: 21 0 22 Next Generator: 23 0 24 3 25 Next Generator: 26 0 27 3 28 6 29 Next Generator: 30 0 31 3 32 6 33 9 34 """ 35 "*** YOUR CODE HERE ***"
Tips:
def every_m_ints_to(n, m): i = 0 while i <= n: yield i i += m def every_3_ints_to_10(): for item in every_m_ints_to(10, 3): yield item g = every_3_ints_to_10() print(type(g)) print(type(every_3_ints_to_10))
print(list(g))
<class 'generator'> <class 'function'>标签:...,generator,Generator,Next,generators,ints,lab08,CS61A From: https://www.cnblogs.com/xuenima/p/17293984.html
[0, 3, 6, 9]