Pythonでプログラミングをしていると、'map' object is not subscriptable
というエラーに遭遇することがあります。このエラーは、Python 3でmap()
関数が返すオブジェクトがリストではなく、イテラブルなmap
オブジェクトであるために発生します。
Python 2とPython 3では、map()
関数の動作が異なります。Python 2では、map()
関数は結果をリストとして返します。しかし、Python 3では、map()
関数はmap
オブジェクト(イテラブル)を返します。
したがって、Python 3でmap()
関数の結果をリストとして扱いたい場合は、list()
関数を使用してmap()
関数の結果をリストに変換する必要があります。例えば、次のように書くことができます:
payIntList = list(map(int, payList))
また、Pythonではインデックスを使わずにコードを書くことが推奨されています。リスト内包表記を使って、上記のコードを次のように書き換えることもできます:
payIntList = [pi + 1000 for pi in payList]
for pi in payIntList:
print(pi)
このように、Python 3で'map' object is not subscriptable
というエラーを解決するためには、map()
関数の結果をリストに変換するか、インデックスを使わずにコードを書くことが有効です。