簡體   English   中英

Python內置函數

[英]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+4foo(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM