2010-03-11 72 views
2

Haskell提供了類似f = f1的功能。 f2用Python模仿Haskell

我該怎樣用Python來模仿?

例如,如果我必須做兩次'地圖'操作,有沒有什麼辦法做一些像地圖這樣的事情。在Python中的地圖?

 
x = ['1','2','3'] 
x = map(int,x) 
x = map(lambda i:i+1, x) 
+0

這是不是你要找的答案,但你的例子可以凝結成'X =地圖(拉姆達我:INT( i)+1,x)' – 2010-03-11 22:09:34

回答

2

我認爲您正在使用Python尋找function composition

你可以這樣做:

f = lambda x: f1(f2(x)) 
1

已經有一個compose操作的一些提案,但都沒有被正式確定。同時,可以使用列表理解或生成器表達式將複雜變換應用於序列。

0

這是here的一個很好的配方。

1
def compose(f,g): 
    return lambda x: f(g(x)) 

def inc(x): return x+1 

map(compose(inc, int), ['1', '2', '3']) 
# [2, 3, 4]