迭代函数的Python迭代器

时间:2013-03-12 15:49:13

标签: python iteration

所以我必须做以下功能 - >重复。在第一次调用时,它应该在第二个函数上返回第三个func.func上的标识。 知道怎么做吗?我尝试查看 iter next 方法buf失败:(

>>> def double(x):
        return 2 * x

>>> i = iterate(double)
>>> f = next(i)
>>> f(3)
3
>>> f = next(i)
>>> f(3)
6
>>> f = next(i)
>>> f(3)
12
>>> f = next(i)
>>> f(3)
24

1 个答案:

答案 0 :(得分:2)

或许这样的事情:

>>> import functools
>>> def iterate(fn):
    def repeater(arg, _count=1):
        for i in range(_count):
            arg = fn(arg)
        return arg
    count = 0
    while True:
        yield functools.partial(repeater, _count=count)
        count += 1


>>> i = iterate(double)
>>> f, f2, f3, f4 = next(i), next(i), next(i), next(i)
>>> f(3), f2(3), f3(3), f4(3)
(3, 6, 12, 24)
>>> f(3), f2(3), f3(3), f4(3)
(3, 6, 12, 24)

所以你编写一个函数来调用原始函数指定为参数的次数,并预先绑定count参数。