更新:2024/10/17

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

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. コードの説明

  1. def my_function(a):これは a を引数に取り、その値を2倍にする関数 my_function を定義しています。
  2. return a * 2関数の中で、引数 a の値を2倍にして返しています。
  3. map(my_function, [5])map 関数を使って、リスト [5] の各要素に対して my_function を適用しています。map 関数は各要素に関数を適用した結果を含むイテレータを返します。
  4. print(list(result))map 関数の結果であるイテレータをリストに変換してから、そのリストを表示しています。この場合、出力は [10] になります。

イテラブルなオブジェクトを map 関数に渡しましょう。

はるか
はるか
これで修正後のコードが完成。
ふゅか
ふゅか
お疲れ様!

5. 関連した記事


check

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

Pythonの記事のまとめ

PR