2012-05-16 3 views

ответ

5
for i in range(n): 
    x = foo(x) 

Если вам нужно сохранить х, использовать другое имя

baz = x 
for i in range(n): 
    baz = foo(baz) 

Если вы отчаянно для ярлык (например, для codegolf)

reduce(lambda x,y:foo(x),[x]*n) 
+0

Мне нравится ярлык: D – jamylak

+0

ярлык слишком умный. –

3
def double(x): 
    return x * 2 

i = 44 
for i in xrange(1,100): 
    i = double(i) 

Может вы имеете в виду простой цикл?

1

Один из способов я могу думать о создании универсального рекурсивной функции, чтобы сделать это

def repeatX(foo, output, count): 
     if not count: 
     return output 
     else: 
     return repeatX(foo, foo(output), count -1) 
+0

Непроверенная рекурсия в python - это почти всегда плохая идея. – BluePeppers

Смежные вопросы