2016-03-21 22 views
-1

func_list adlı bir işlevler listem var.Python'da yinelemeli işlevlerin bir listesini çağırır mısınız?

Onları tek tek yürütmek istiyorum ve func_list[index] yürütme sonucu func_list[index + 1] için bağımsız değişken olarak geçirilmelidir, vb.

def func(arg, index): 
    while index < 10: 
     res = func_list[index](arg) 
     res = func(res, index+1) 
    return res 

aynı ulaşma daha iyi bir yolu var mı:

ben bu kod ile geldi?

+1

Evet. Bir 'for' döngüsü kullanın. –

cevap

2

functools.reduce bunun için nedir.

from functools import reduce 

reduce(lambda a,b: b(a), func_list, FIRST_ARG) 

Bu

func_list[n](func_list[n-1](... func_list[0](FIRST_ARG) ...)) 

functools.reduce

iki bağımsız değişkenin (ve isteğe bağlı olarak bir üçüncü) alır çalışacaktır. İlk argüman, bir değer döndüren bir ikili işlevdir, ikinci argüman ikili işleve geçmek için değerlerin yinelenebilir bir değeridir ve isteğe bağlı üçüncü, bu listeden önce yerleştirilecek bir değerdir (ilk koşunun ilk argümanı olarak) ikili işlev).

Önceki işlev çağrısının sonucu, bir sonraki işlev çağrısı için a olarak, yinelenen sonraki öğe ile birlikte b olarak verilir. Bu nedenle lambda a,b: b(a), bir önceki işlevin argümanı olarak önceki sonucu çağırır.

+0

Teşekkür ederim !!!!!! – HJC

İlgili konular