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 在函式體內可以進行任意的操作 可以想象其中會有很...