1. 程式人生 > >python:reduce方法

python:reduce方法

reduce方法是將一個數據集合(列表、元組等)中所有的資料進行指定操作
該方法首先需要匯入模組,如下:

from functools import reduce

reduce()函式的定義:
格式:
reduce(function,sequence,initial_value)
function:接收一個函式,該函式必須接受兩個引數。
sequence:接收可迭代的型別
initial_value:預設值,如果提供該值,在第一次執行的時候會以sequence中的第一個元素和initial_value作為引數呼叫 function,否則會以sequence中的前兩個元素作為引數。

需要注意的是:reduce()中傳入的函式f必須接受兩個引數,reduce()對列表中的每個元素反覆呼叫函式f,並返回最終的結果值。

例如:編寫一個函式,接受x和y,返回x,y的和

def f(x,y):
    return x+y

reduce的函式定義方法:

a = reduce(f,[1,2,3,4,5,6])
print(a)
#>>>21

在上述例子中,首先將1,2傳遞給f,呼叫f後得到3,之後再將3,3作為引數傳遞給f繼續呼叫,直到得出一個數值。

a = reduce(f,[1,2,3,4,5,6],100)
print(a)
#>>>121

如果我們新增initial_value值,會首先將initial_value的值和sequence的第一個元素傳遞給function,之後返回值和第二個元素再傳遞給function。

reduce的匿名函式方法:

print(reduce(lambda: x,y:x+y,[1,2,3,4,5])
#>>>17
#或者帶初始值的方法
print(reduce(lambda: x,y:x+y,[1,2,3,4,5],100)
#>>>117

python3中統計某字串出現的次數

from functools import reduce
sentences = ['我今年剛到北京,我去過北京天安門,北京真的是很棒,我想留在北京。 ']
word_count =reduce(lambda a,x:a+x.count("北京"),sentences,0)
print(word_count)

如果單純的想要實現以上功能,則可以使用以下方式:

from functools import reduce
sentences = ['我今年剛到北京,我去過北京天安門,北京真的是很棒,我想留在北京。 ']
print(sentences[0].count("北京"))