LESSON 23 ・ 関数
map関数
mapで各要素を変換する
def square(x):
return x * x
a = [2, 3, 5]
b = map(square, a)
for x in b:
print(x)
mapは代表的な高階関数です。リストの各要素に関数を適用した結果を返します。
たとえば、mapにsquareを渡すと、第2引数に渡したリストのすべての要素を2乗した結果を返します。
def square(x):
return x * x
a = [2, 3, 5]
b = map(square, a)
print(b)
def square(x):
return x * x
a = [2, 3, 5]
b = map(square, a)
c = list(b)
print(c)
list関数を使ってmapオブジェクトをリストに変換することができます。リストはprintで中身を表示することができます。
PRACTICE
演習問題
コードを自分で書いて実行してから、答えと解説を確認しましょう。
問題1
[2, 3, 5]の各要素を2乗する関数squareを定義し、mapですべての要素を変換した結果を表示してください。
答えと解説を見る
模範解答
def square(x):
return x * x
numbers = [2, 3, 5]
result = list(map(square, numbers))
print(result)
mapは各要素にsquareを適用します。結果は[4, 9, 25]です。mapオブジェクトはlistでリストに変換しています。
問題2
整数を1増やす関数add_oneを定義し、mapを使って[1, 4, 7]の各要素に適用した結果を表示してください。
答えと解説を見る
模範解答
def add_one(x):
return x + 1
numbers = [1, 4, 7]
result = list(map(add_one, numbers))
print(result)
mapへ関数add_oneを渡すと、すべての要素に同じ処理が適用されます。結果は[2, 5, 8]です。
問題3
点数55、70、88のすべてに5点を加えた新しいリストをmapで作ってください。さらに、変換後の点数をすべて足し、その合計を表示してください。
答えと解説を見る
模範解答
def adjust_score(score):
return score + 5
scores = [55, 70, 88]
adjusted = list(map(adjust_score, scores))
total = 0
for score in adjusted:
total += score
print(total)
mapで各点数を変換してから、これまでに学んだループで合計します。変換後は60、75、93なので、合計は228です。