python内蔵関数-reduce()関数
7038 ワード
reduce()
関数は、関数、シーケンス、初期値の3つのパラメータを受信します.reduce()
関数の実行方法は、2つのパラメータを受信した1つの関数を、シーケンスに作用する要素が1つしか残っていないまで、左から右に累積することである.初期値のデフォルトはNone
で、存在する場合はシーケンス内の要素計算の前に配置し、シーケンスが空の場合はデフォルトとします.例:from functools import reduce
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
まず計算
1 + 2
結果を得る3
結果と次の要素をパラメータとして関数、すなわち計算3 + 3
に、最後まで順に類推する.計算リスト
[1, 2, 3, 4]
の各要素の平方和:a = [1, 2, 3, 4]
b = reduce(lambda x, y: x * x + y * y, a)
print(b) # 1172
エラー結果が得られたのは
reduce()
関数の実行順序がわからず、上のコードは計算1^2+2^2=5
、再計算5^2+3^2=34
、そして34^2+4^2=1172
に相当する.実装要件には、次のコードを使用します.c = reduce(lambda x, y: x + y, [i * i for i in a])
print(c) # 30
すなわち,まず各要素を二乗操作して累積加算する.
初期値の使用:
d = reduce(lambda x, y: x + y, a, 5)
print(d) # 15, , str :TypeError: must be str, not int
d = reduce(lambda x, y: x + y, [], 'abc')
print(d) # , :'abc'
filter()
関数と同様、reduce()
関数は他のデータ型を操作することもできます.res = reduce(lambda x, y: x + ' ' + y, ['Hello', 'tomorrow'])
print(res) # Hello tomorrow
以下は菜鳥チュートリアル
reduce()
関数の下で共有されているメモです.文字列の中にある文字が現れた回数を統計するには、まず文字列をリストに入れる必要があります.sentences = [
'The Deep Learning textbook is a resource intended to help students and practitioners enter the field of machine learning in general and deep learning in particular. ']
word_count = reduce(lambda a, x: a + x.count('learning'), sentences, 0)
print(word_count) # 2
この例では、
a
は初期値0、x
は文全体である.初期値が設定されていなければa
文全体を表すx
は空であり、結果は文全体である.(個人的な理解)