mimel   6년 전

문제 자체랑은 별로 관계없는 질문이지만 동작이 이해가 안 가서 남겨봅니다.

아래와 같은 코드에 예제를 돌리면 3번째 줄까지 입력받고 

Traceback (most recent call last):
File "D:/Python36/Outer Library/1966.py", line 7, in
if p[i]==Max:
TypeError: 'map' object is not subscriptable

에러를 뿜습니다. 콘솔에서 list(p)를 출력해보면 [], 빈 리스트를 출력하고 Max 변수를 확인하면 5가 제대로 입력되어있습니다.

검색을 해보니 lambda함수가 다음 줄로 넘어가면 메모리 영역에서 증발한다는 말이 있는데 그것때문인 것치곤 max(p)의 값은 제대로 출력했는데 이유를 모르겠습니다... 일단 p=iN()을 p=list(iN())으로 바꾸면 동작은 하던데말이죠.

제가 모르는 파이썬 구현의 특이한 점이 있는건가요?

** 코딩하다 예상과는 다르게 동작하는 게 궁금해서 남기는 질문입니다. 알고리즘 테스트는 아직 진행중이에요!

jh05013   6년 전

map은 iterable을 반환합니다. 간단히 말하면 한 번에 하나씩 원소를 차례대로 내뱉는 존재입니다. 그래서 이것을 for루프에 넣어서 하나씩 둘러 보거나 max에 넣어서 최대값을 찾아낼 수는 있지만, i번째 원소를 볼 수는 없습니다.

jh05013   6년 전

5줄에서 max(p)를 하면 p에 들어있는 모든 원소를 차례대로 사용하게 됩니다. 그래서 Max에 최대값이 저장되지만, 그 후에 list(p)를 하면 더 이상 볼 수 있는 원소가 없어서 []를 반환합니다.

mimel   6년 전

간단한 이유였군요...감사합니다. 이제 홀가분한 마음으로 디버깅할 수 있겠어요!

댓글을 작성하려면 로그인해야 합니다.