更新:2024/10/17

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

2. エラーの概要

TypeError: my_function() missing 1 required positional argument: ‘b’のエラーは、map関数を使用している際に、my_function関数に必要な引数が不足しているために発生しています。具体的には、my_functionは2つの引数(ab)を必要としますが、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. 関連した記事


check

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

Pythonの記事のまとめ

PR