1. ホーム
  2. python

[解決済み】Pythonのmapオブジェクトはsubscriptableではない

2022-02-15 23:31:35

質問

以下のスクリプトでエラーが発生するのはなぜですか?

payIntList[i] = payIntList[i] + 1000
TypeError: 'map' object is not subscriptable

payList = []
numElements = 0

while True:
        payValue = raw_input("Enter the pay amount: ")
        numElements = numElements + 1
        payList.append(payValue)
        choice = raw_input("Do you wish to continue(y/n)?")
        if choice == 'n' or choice == 'N':
                         break

payIntList = map(int,payList)

for i in range(numElements):
         payIntList[i] = payIntList[i] + 1000
         print payIntList[i]

解決方法は?

Python 3 の場合。 map 型の反復可能なオブジェクトを返します。 map であり、添え字リストではない。 map[i] . リスト結果を強制するには、次のように記述します。

payIntList = list(map(int,payList))

しかし、多くの場合、インデックスを使わない方が、コードをきれいに書くことができます。例えば リスト内包 :

payIntList = [pi + 1000 for pi in payList]
for pi in payIntList:
    print(pi)