1
我想實現我自己的Python映射函數版本。我稱它爲my_map。約束條件是使用函數式編程(如果語句允許,循環不允許)。執行映射返回列表而不是列表
這裏的實現:
# f is the function it takes in, and ls is the list to apply this function over.
def my_map(f, ls):
if len(ls) != 1:
ret = my_map(f, ls[1:])
return [f(ls[0])] + [ret]
else:
return f(ls[0])
但是當我運行這個具有以下輸入:
def f(x):
return x * x
my_map(f, [1,2,3,4])
回報[1, [4, [9, 16]]]
而map(f, [1,2,3,4])
回報[1, 4, 9, 16]
,這是我的期望。
關於如何獲得預期結果的任何想法?
我得到這個:類型錯誤:只能串聯列表(不是 「INT」)列出 – periphery 2014-12-08 00:02:30
@periphery:呵呵,上次'返回F(LS [0])'應該是'返回[F(LS [0])]'。 – Ryan 2014-12-08 00:04:05
謝謝,這個工程。我還找到了另一種方式來做到這一點,我也加了一個答案。 – periphery 2014-12-08 00:07:19