更新:2024/10/17

pythonのmap関数の使い方について解説!リストの要素に関数を適用。

はるか
はるか
Pythonのmap関数。便利。
ふゅか
ふゅか
そうね!リストやタプルの各要素に適用できるんだよね。具体的にどう使うのか見てみようか♪

1. map関数とは

map関数は、Pythonで非常に便利な高階関数の一つです。map関数を使うことで、ある関数をイテレータ(リストやタプルなど)の各要素に適用することができます。以下に、map関数の使い方と例をいくつか紹介します。

2. mapの基本的な使い方

map関数の基本的な構文は以下の通りです。

map(function, iterable)
  • function: イテラブルの各要素に適用する関数。
  • iterable: 関数を適用する対象のイテレータ。

map関数は、適用後の各要素を含むイテレータを返します。

2.1. 例1: リストの各要素を2倍にする

以下は、リストの各要素を2倍にする例です。multiply_by_twoが2倍にする関数です。

def multiply_by_two(x):
    return x * 2

numbers = [1, 2, 3, 4, 5]
result = map(multiply_by_two, numbers)
print(type(result))

# mapオブジェクトをリストに変換
result_list = list(result)
print(result_list)  # 出力: [2, 4, 6, 8, 10]


ふゅか
ふゅか
まずは、関数multiply_by_twoを定義して、それを使ってリストの各要素を2倍にするよ。
はるか
はるか
mapオブジェクトが返ってくるから、リストに変換する必要がある。

2.2. 例2: 匿名関数(lambda)を使う

例1をlambda関数を使って簡略化することもできます。

numbers = [1, 2, 3, 4, 5]
result = map(lambda x: x * 2, numbers)

result_list = list(result)
print(result_list)  # 出力: [2, 4, 6, 8, 10]


はるか
はるか
次に、lambda関数を使って同じことをもっと簡単に書けるよ。
ふゅか
ふゅか
lambdaを使うと、関数をその場で定義できるから便利だね!

2.3. 例3: 複数のイテラブルを使う

map関数は複数のイテラブルをmapの引数にすることができます。例えば、2つのリストの対応する要素を足し合わせることができます。

numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]
result = map(lambda x, y: x + y, numbers1, numbers2)

result_list = list(result)
print(result_list)  # 出力: [5, 7, 9]


はるか
はるか
複数のリストを渡すと、それぞれの対応する要素を使って処理できる。
ふゅか
ふゅか
例えば、2つのリストの要素を足し合わせる場合だね。見てみよう!

2.4. 例4: 文字列のリストを大文字に変換する

文字列のリストを大文字に変換する例です。

words = ['hello', 'world', 'python']
result = map(str.upper, words)

result_list = list(result)
print(result_list)  # 出力: ['HELLO', 'WORLD', 'PYTHON']

3. イテレータが複数あり、それぞれの長さが異なる場合

3.1. 例1: 異なる長さのリスト

2つのリストを用いて異なる長さのリストにおけるmapについて次のコードで動作を確認します。

numbers1 = [1, 2, 3, 4, 5]
numbers2 = [10, 20, 30]

# 各要素を足し合わせる関数
result = map(lambda x, y: x + y, numbers1, numbers2)

# 結果をリストに変換して表示
result_list = list(result)
print(result_list)  # 出力: [11, 22, 33]

上記の例では、numbers1numbers2の長さが異なります。map関数は最短のnumbers2の長さ(3)に合わせて処理を行います。そのため、結果のリストも3つの要素になります。

はるか
はるか
リストの長さが違う場合、最短のリストに合わせて処理される。
ふゅか
ふゅか
そうそう。だから、結果も最短のリストの長さに依存するんだね!

3.2. 例2: さらに異なる長さのリスト

もう一つ、3つのリストを用いてより極端な例を示します。

numbers1 = [1, 2, 3, 4, 5]
numbers2 = [10, 20]
numbers3 = [100, 200, 300, 400]

# 各要素を足し合わせる関数
result = map(lambda x, y, z: x + y + z, numbers1, numbers2, numbers3)

# 結果をリストに変換して表示
result_list = list(result)
print(result_list)  # 出力: [111, 222]


この場合、numbers1numbers2numbers3の長さがそれぞれ異なります。map関数は最短のnumbers2の長さ(2)に合わせて処理を行います。そのため、結果のリストも2つの要素になります。

3.3. まとめ

map関数を使うことで、コードをより簡潔にし、繰り返し処理を効率的に行うことができます。複雑な処理も関数を定義して適用することで、可読性と再利用性を高めることができます。

ふゅか
ふゅか
map関数を使うと、コードが簡潔になって繰り返し処理が効率的になるね♪
はるか
はるか
うん、複雑な処理も関数を定義して適用するだけで、可読性と再利用性が高まる。

4. map関数のエラー

map関数でエラーが生じたときの対策方法について解説しています。

4.1. TypeError: ‘xxx’ object is not iterable

pythonのmap関数でTypeError: ‘xxx’ object is not iterable:問題と解決策

TypeError: xxxx() missing 1 required positional argument: ‘xxx’

pythonのmapでTypeError: xxxx() missing 1 required positional argument: ‘b’:問題と解決策

AttributeError: ‘map’ object has no attribute ‘xxxx’

pythonのmapでAttributeError: ‘map’ object has no attribute ‘xxxx’


check

Pythonの基本から応用まで、幅広くカバーする記事を公開中です。学習のポイントや実践的なコード例を通じて、Pythonの魅力と実用性を深く理解することができます。ぜひ、こちらの記事で気になる記事を見つけてください!

Pythonの記事のまとめ

PR