Reduce() と lambda 関数
lambda 関数の使い方がとても上達していますね。ここでスキルにもう1つ関数を加えましょう。reduce() 関数は、リストに対して何らかの計算を実行し、map() や filter() と異なり、結果として単一の値を返すときに便利です。reduce() を使うには、functools モジュールからインポートする必要があります。
少し前の演習の gibberish() を覚えていますか?
# Define gibberish
def gibberish(*args):
"""Concatenate strings in *args together."""
hodgepodge = ''
for word in args:
hodgepodge += word
return hodgepodge
gibberish() は、引数として文字列のリストを受け取り、それらすべてを連結したものを単一の値として返すだけの関数です。この演習では、reduce() と、文字列を連結する lambda 関数を使って、この機能を再現します。
この演習はコースの一部です
Pythonの関数入門
演習の手順
functoolsモジュールからreduce関数をインポートしてください。reduce()の呼び出しでは、2つの文字列引数item1とitem2を受け取りそれらを連結する lambda 関数と、文字列のリストstarkを渡します。結果をresultに代入してください。reduce()の第1引数は lambda 関数で、第2引数はリストstarkです。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import reduce from functools
# Create a list of strings: stark
stark = ['robb', 'sansa', 'arya', 'brandon', 'rickon']
# Use reduce() to apply a lambda function over stark: result
result = reduce(____, ____)
# Print the result
print(result)