在 python 中没有 for 循环的情况下重复函数几次

Repeat function a couple times without for loop in python

有没有办法在 Python 2 中快速重复一个函数(并生成一个元组)?

我希望语法类似于:

x, y = repeat(fxn, 2)

其中 fxn 不带参数,2 是输出元组的长度。

您可以使用生成器表达式:

x, y = (fxn() for _ in range(2))

递归方法

如果你坚持你真的想要一个 repeat 函数,它 以给定的次数重复调用一个函数 return这是所有调用的所有return值的元组,你可能会在递归中写:

x, y = repeat(fxn, 2) #repeat fxn 2 times, accumulate the return tuples

所以

def repeat(f,n):
   ret, n = (f(),), n-1
   if n>0:
       ret = ret + (repeat(f,n))
   return ret

测试是否有效

假设您定义了一个测试函数:

def F():
    return 'foo'

测试重复

a = repeat(F,1) # a <-- 'foo'
a, b = repeat(F,2) # a = 'foo', b = 'foo'
a, b, c, d, e = repeat(F,5) # returns tuples of ('foo','foo','foo','foo','foo') correctly

宾果!

还有一种方法

import itertools
result = itertools.imap(lambda _:fxn(), range(0, 2)