Python map 개체를 구독할 수 없습니다.
다음 스크립트에서 오류가 발생하는 이유는 무엇입니까?
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]
파이썬 3에서,map
반복 가능한 유형의 개체를 반환합니다.map
그리고 당신이 쓸 수 있는 구독 가능한 목록이 아닙니다.map[i]
목록 결과를 강제로 지정하려면 다음과 같이 기록합니다.
payIntList = list(map(int,payList))
그러나 대부분의 경우 인덱스를 사용하지 않음으로써 코드를 훨씬 더 잘 쓸 수 있습니다.예를 들어, 목록이 포함된 경우:
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개의 공백이 파이썬의 표준 들여쓰기 금액입니다.
pypy3나 python3에서 이 문제에 범위를 사용할 필요가 없으므로 실제로 코드가 적습니다.
for i in payIntList: print ( i + 1000 )
그리고 공교롭게도 위의 PhiHag 솔루션에 있는 RustyTom의 코멘트와 일치합니다.참고: pypy3 또는 python3에서 배열 괄호 []를 사용하여 지도를 참조할 수 없습니다. 그렇지 않으면 동일한 오류가 발생합니다.
payIntList[i]
지도 참조가 오류를 발생시켰습니다.
언급URL : https://stackoverflow.com/questions/6800481/python-map-object-is-not-subscriptable
'source' 카테고리의 다른 글
파이썬이 정수 나눗셈을 음의 무한대로 반올림하기로 선택한 수학적 이유는 무엇입니까? (0) | 2023.05.29 |
---|---|
vb.net 의 목록.각자를 위해 - 나를 혼란스럽게 합니다. (0) | 2023.05.29 |
Google의 CDN에서 jQuery UI CSS 다운로드 (0) | 2023.05.24 |
ASP.NET MVC 5 및 WEB API 2에서 oauth2 서버를 구현하는 방법 (0) | 2023.05.24 |
VSCode로 Angular를 디버깅하는 방법은 무엇입니까? (0) | 2023.05.24 |