def accumulate(fn, initial, seq):
if seq == ():
return initial
else:
return fn(seq[0], accumulate(fn, initial, seq[1:]))
使用accumulate
我想编写一个排序函数。
def insertion_sort_hof(tup):
return accumulate(lambda x,y: x,y = y,x if x > y else None , () ,tup)
这是我的代码,我似乎无法运行它。为什么?
insertion_sort_hof(()) # ()
insertion_sort_hof((19,10,1,4,3,1,3, 2)) #(1, 1, 2, 3, 3, 4, 10, 19)
答案 0 :(得分:1)
lambda不能包含赋值,因此lambda无效。尝试添加这样的括号,你会收到一条错误信息:
lambda x,y: (x,y) = (y,x) if x > y else None
无论如何它都无法工作,因为你只是将值本地交换到该函数。