HOWTO · Python
TypeError を修正: 'map' オブジェクトは Python で添字可能ではありません
このチュートリアルでは、TypeError: map object is not subscriptable の原因と、Python でこのエラーを解決するための解決策を示します。
このページの内容
どのプログラミング言語でも、多くのエラーが発生します。 コンパイル時に発生するものもあれば、実行時に発生するものもあります。
この記事では、TypeError: 'map' object is not subscriptable、TypeError のサブクラスについて説明します。 オブジェクトのタイプと互換性のない操作を実行しようとすると、TypeError が発生します。
Python での TypeError: 'map' object is not subscriptable エラーの原因
Python 3 での Python 2 マップ操作
Python 2 では、map() メソッドはリストを返します。 添字演算子 [] を介してインデックスを使用して、リストの要素にアクセスできます。
Python 3 では、map() メソッドはイテレータであり、添え字を付けられないオブジェクトを返します。 添え字演算子 [] を使用してアイテムにアクセスしようとすると、TypeError: 'map' object is not subscriptable が発生します。
コード例:
# Python 3.x
my_list = ["1", "2", "3", "4"]
my_list = map(int, my_list)
print(type(my_list))
my_list[0]
出力:
#Python 3.x
<class 'map'>
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-1-07511913e32f> in <module>()
2 my_list = map(int, my_list)
3 print(type(my_list))
----> 4 my_list[0]
TypeError: 'map' object is not subscriptable
Python の TypeError: 'map' object is not subscriptable エラーを修正する
Python 3 でマップ オブジェクトをリストに変換する
list() メソッドを使用してマップ オブジェクトをリストに変換する場合、添字演算子/リスト メソッドを使用できます。
コード例:
# Python 3.x
my_list = ["1", "2", "3", "4"]
my_list = list(map(int, my_list))
print(my_list[0])
出力:
#Python 3.x
1
Python 3 のイテレータで for ループを使用する
for ループを使用してイテレータ内の項目にアクセスできます。 後ろで __next__() メソッドを呼び出し、すべての値を出力します。
コード例:
# Python 3.x
my_list = ["1", "2", "3", "4"]
my_list = list(map(int, my_list))
for i in my_list:
print(i)
出力:
#Python 3.x
1
2
3
4