Python 高階特性之 reduce

2021-07-09 14:08:43 字數 741 閱讀 2981

reduce() 函式接收兩個引數, 乙個是函式, 乙個是序列;

但傳入的這個函式必須接收兩個引數, reduce() 會把這個函式運算的結果繼續和序列的下乙個元素做累積運算, 相當於:

reduce(fun, [x1, x2, x3, x4]) = fun(fun(fun(x1, x2), x3), x4)
例子, 對序列求和:

def

add(x, y):

return x + y

reduce(add, [1, 3, 5, 7, 9])

>>>25

lambda 簡化版:

reduce(lambda x, y : x + y, [1, 3, 5, 7, 9])

>>>25

再來乙個例子, 因為python 中字串 str 也是乙個序列, 所以可以藉此實現 python 自帶的 int() 函式功能, 把乙個字串轉換成整數:

def

chartonum

(i):

return [i]

defstrtoint

(s):

return reduce(lambda x, y : x * 10 + y, map(chartonum, s))

Python高階特性之切片

切片操作符是序列名後跟乙個方括號,方括號中有一對可選的數字,並用冒號分割。注意這與你使用的索引操作符十分相似。記住數是可選的,而冒號是必須的。切片操作符中的第乙個數 冒號之前 表示切片開始的位置,第二個數 冒號之後 表示切片到 結束,第三個數 冒號之後 表示切片間隔數。如果不指定第乙個數,pytho...

Python高階特性之切片

取乙個list或tuple的部分元素是非常常見的操作。比如,乙個list如下 l michael sarah tracy bob jack 取前3個元素,應該怎麼做?笨方法 l 0 l 1 l 2 michael sarah tracy 之所以是笨方法是因為擴充套件一下,取前n個元素就沒轍了。取前n...

Python高階特性之裝飾器

裝飾器 定義乙個裝飾函式,函式必須返回乙個閉包 閉包就是執行時所需要的外部變數 函式物件,關於閉包的具體介紹,可參考函式,並且被裝飾的函式會被python自動傳遞給裝飾函式,作為裝飾函式的乙個引數。裝飾器的具體定義 1 把要裝飾的方法作為輸入引數 2 在函式體內可以進行任意的操作 可以想象其中會有很...