23 / 2785%

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は代表的な高階関数です。リストの各要素に関数を適用した結果を返します。

たとえば、mapsquareを渡すと、第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

点数557088のすべてに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で各点数を変換してから、これまでに学んだループで合計します。変換後は607593なので、合計は228です。