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


はるか
TypeError: ‘int’ object is not iterable って。なんだこれ。

ふゅか
それはよくあるエラーだね。見てみよう!
1. 問題のコード
def my_function(a):
return a * 2
map(my_function, 5)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[1], line 3
1 def my_function(a):
2 return a*2
----> 3 map(my_function, 5)
TypeError: 'int' object is not iterable

はるか
このコードでエラーが出てる

ふゅか
うん、map関数の第2引数にint型の5を渡してるのが問題だね。
1.1. 欲しい出力結果
5の2倍である10のリストが出力結果になるようにコードを修正する。
[10]
1.2. 検証環境
Python 3.9.18
Windows11
Jupyter Lab 3.6.3
Windows11
Jupyter Lab 3.6.3
2. エラーの概要
TypeError: ‘int’ object is not iterable
map
関数の第2引数にはイテラブルなオブジェクト(リスト、タプル、セットなど)が必要ですが、このコードでは整数 5
が渡されています。整数はイテラブルではないため、エラーが発生しています。

はるか
エラーの原因は整数がイテラブルじゃないから。
3. エラーの修正
def my_function(a):
return a * 2
map(my_function, 5)
map
関数の第2引数として、整数の代わりにリストや他のイテラブルオブジェクトを渡す必要があります。例えば、リスト [5]
を渡すように修正します。
3.1. 修正後のコード
def my_function(a):
return a * 2
result = map(my_function, [5])
print(list(result))
4. コードの説明
def my_function(a):
これはa
を引数に取り、その値を2倍にする関数my_function
を定義しています。return a * 2
関数の中で、引数a
の値を2倍にして返しています。map(my_function, [5])
map
関数を使って、リスト[5]
の各要素に対してmy_function
を適用しています。map
関数は各要素に関数を適用した結果を含むイテレータを返します。print(list(result))
map
関数の結果であるイテレータをリストに変換してから、そのリストを表示しています。この場合、出力は[10]
になります。
イテラブルなオブジェクトを map
関数に渡しましょう。

はるか
これで修正後のコードが完成。

ふゅか
お疲れ様!
5. 関連した記事
- pythonの関数について
- pythonのmap関数の使い方
- pythonのmapでTypeError: xxxx() missing 1 required positional argument: ‘b’
- pythonのmapでAttributeError: ‘map’ object has no attribute ‘xxxx’
check
Pythonの基本から応用まで、幅広くカバーする記事を公開中です。学習のポイントや実践的なコード例を通じて、Pythonの魅力と実用性を深く理解することができます。ぜひ、こちらの記事で気になる記事を見つけてください!
PR