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]


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]


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.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]
上記の例では、
numbers1
とnumbers2
の長さが異なります。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]
この場合、numbers1
、numbers2
、numbers3
の長さがそれぞれ異なります。map
関数は最短のnumbers2
の長さ(2)に合わせて処理を行います。そのため、結果のリストも2つの要素になります。
3.3. まとめ
map
関数を使うことで、コードをより簡潔にし、繰り返し処理を効率的に行うことができます。複雑な処理も関数を定義して適用することで、可読性と再利用性を高めることができます。


4. map関数のエラー
map関数でエラーが生じたときの対策方法について解説しています。
4.1. 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の魅力と実用性を深く理解することができます。ぜひ、こちらの記事で気になる記事を見つけてください!