반응형
Python지도 개체는 구독 할 수 없습니다.
다음 스크립트에서 오류가 발생하는 이유는 무엇입니까?
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))
그러나 대부분의 경우 인덱스를 사용하지 않으면 코드를 더 멋지게 작성할 수 있습니다. 예를 들어, list comprehensions :
payIntList = [pi + 1000 for pi in payList]
for pi in payIntList:
print(pi)
map()
목록을 반환하지 않고 map
객체를 반환 합니다.
list(map)
다시 목록으로 만들려면 전화해야 합니다.
더 좋게
from itertools import imap
payIntList = list(imap(int, payList))
중간 객체를 만드는 데 많은 메모리를 차지하지 않고 생성 할 때 전달 ints
됩니다.
또한 if choice.lower() == 'n':
두 번 할 필요가 없도록 할 수 있습니다 .
파이썬 지원 +=
: 당신이 할 수있는 payIntList[i] += 1000
그리고 numElements += 1
당신이 원하는 경우.
정말 까다로워지고 싶다면 :
from itertools import count
for numElements in count(1):
payList.append(raw_input("Enter the pay amount: "))
if raw_input("Do you wish to continue(y/n)?").lower() == 'n':
break
및 / 또는
for payInt in payIntList:
payInt += 1000
print payInt
또한 4 개의 공백은 Python의 표준 들여 쓰기 양입니다.
참조 URL : https://stackoverflow.com/questions/6800481/python-map-object-is-not-subscriptable
반응형
'Development Tip' 카테고리의 다른 글
R : 루프 중단 (0) | 2020.12.15 |
---|---|
선택 쿼리의 출력을 postgres의 하나의 어레이에 저장 (0) | 2020.12.15 |
MSVC 14.0 (VS 2015)으로 Boost를 컴파일하는 동안 알 수없는 컴파일러 버전 (0) | 2020.12.15 |
사용자가 수행 할 권한이 없습니다. cloudformation : CreateStack (0) | 2020.12.15 |
Ruby 1.9를 Ubuntu에서 기본 Ruby로 만들려면 어떻게해야합니까? (0) | 2020.12.15 |