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


はるか
TypeError: xxxx() missing 1 required positional argument。引数かぁ。
1. 問題のコード
def my_function(a, b):
return a + b
result=list(map(my_function, [(1, 2), (3, 4, 5)]) )
print(result)
今回のPythonコードは二つのセットの足し算を行うためにmap関数を使用しましたが、エラーが出てしまいました。このエラーを解消しましょう。

はるか
おっ。エラーが出た。

ふゅか
あーなるほど。mapの引数に問題あるみたいね。
1.1. 欲しい出力結果
1+3=4と2+4=6のリストである出力結果を目標に修正する。
[4,6]
1.2. 検証環境
Python 3.9.18
Windows11
Jupyter Lab 3.6.3
Windows11
Jupyter Lab 3.6.3
2. エラーの概要
TypeError: my_function() missing 1 required positional argument: ‘b’のエラーは、map
関数を使用している際に、my_function
関数に必要な引数が不足しているために発生しています。具体的には、my_function
は2つの引数(a
とb
)を必要としますが、map
関数に渡されているリストのタプルの数が異なるため、my_function
に正しい数の引数が渡されていません。今回の場合は2つ必要であるが、リストの中に二つのsetがあるため、引数にはひとつしか入っていることになっている。
3. エラーの修正
def my_function(a, b):
return a + b
result=list(map(my_function, [(1, 2), (3, 4, 5)]) )
print(result)
このコードでは、map
関数を使用してmy_function
をタプルのリストに適用しようとしていますが、my_function
が必要とする引数の数が一致しないため、エラーが発生します。よって、リストの中のタプルがmy_functionに渡されるように、リストの中身を修正します。つまり、リストで囲まずに、setごとに引数を与えれば次のコードで計算することができます。
def my_function(a, b):
return a + b
result=list(map(my_function, (1, 2), (3, 4, 5)) )
print(result)

はるか
ん。簡単に修正。
4. 関連した記事
- pythonの関数について
- pythonのmap関数の使い方
- pythonのmapでAttributeError: ‘map’ object has no attribute ‘xxxx’
- pythonのmap関数でTypeError: ‘xxx’ object is not iterable
check
Pythonの基本から応用まで、幅広くカバーする記事を公開中です。学習のポイントや実践的なコード例を通じて、Pythonの魅力と実用性を深く理解することができます。ぜひ、こちらの記事で気になる記事を見つけてください!
PR