[英]Python built-in function
在python中有這樣的函數的內置等價物:
def foo(a_func,a_list):
if len(a_list)==2:
return a_func(*[a_list])
else:
return a_func(a_list[0],foo(a_func,a_list[0:]))
換句話說, foo(lambda x,y:x+y,[1,2,3,4])
會加1+2+3+4
和foo(lambda x,y:xy,[1,2,3,4])
會做((1-2)-3)-4
等
我知道你可以讓它更快,並防止堆棧溢出(:D),但我想我記得這樣的功能,但不知道名稱是什么,不知道該怎么去谷歌。
它的reduce
功能是什么!
從左到右累加兩個參數的函數到iterable項,以便將iterable減少為單個值
看起來你正在尋找https://docs.python.org/2/library/functools.html#functools.reduce(AKA https://docs.python.org/2/library/functions.html#reduce in Python 2),假設你的代碼和a_list[0:]
存在一個錯誤,你實際上是指a_list[1:]
(否則你正在尋找一個永無止境的循環:-)。
您正在描述reduce()
函數 ; 在Python 3中它已被移動到functools
模塊 :
應用的兩個參數函數累計到序列的項目,由左到右,這樣的順序,以減少單個值。 例如,
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
計算((((1+2)+3)+4)+5)
。
你當然可以使用任何可調用的; operator
模塊提供了幾個方便的選項:
>>> from functools import reduce
>>> import operator
>>> reduce(operator.add, [1,2,3,4])
10
>>> reduce(operator.sub, [1,2,3,4])
-8
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.