0

我正在尝试在 python 中使用 yield 表达式来打印数字:0,2,4 .... 使用代码,但我一直得到 print :<generator object some_f at 0x000000000252D240>

代码是:

fn= lambda n: 2*n

def Make_iterator(fn):

    def some_f():
        i=0
        yield fn(i)
        i+=1

    return some_f

iterator = Make_iterator(fn)
for i in range(4):
    print(iterator())
4

1 回答 1

0

我认为这更符合您的要求。

fn = lambda n: 2*n

def Make_iterator(fn):
    def my_iter():
        i=0
        while i<10:
            yield fn(i)
            i+=1
    return my_iter()


for i in Make_iterator():
    print(i)

你不需要额外的函数包装器,你需要确保你迭代你的迭代器,而不是仅仅调用它很多次。

于 2013-11-07T19:12:51.760 回答