파이썬질문하나드려도될까요
비공개
(손님)
2022.08.25 23:23:16
파이썬 질문하나 드려도 될까요?
프로그램 언어를 처음 배우는 중이라 이것저것 해보는 중인데..
왜 에러가 나는지 이해가 안가서 질문 드립니다

s = map(int, (1,2))
print(list(s)[0])
이렇게 하면 1이 출력되는데..

s = map(int, (1,2))
print(list(s)[0])
print(list(s)[0])
프린트를 한번 더 쓰면 list index out of range가 뜨는데..
이유를 알 수 있을까요?
아 궁금해서 잠이 오지 않아요
3.80.4.147 |

잡담 | 1,160명이 읽었어요. 3.80.4.147 | | 10

레어·유머·자작 인기글
1 한파속 웨딩촬영 22시간 전
2 요즘 아디다스 매장에서 폐점세일을 많이 하는 이유 18시간 전
3 넥슨 검수 다시 해야한다는데ㄷㄷㄷ 12시간 전
4 어느 게임 코스어의 최후 8시간 전
5 신종 지적수준 인증 15시간 전
댓글 4
1 비공개
https://docs.python.org/3/library/functions.html#map 요기 보시면
map 은 iterator 를 만들어 냅니다. iterator 는 이름 그대로 순환하면 소비되어 사라집니다.

https://docs.python.org/3/library/stdtypes.html#list 요기 보시면
list 는 iterable 을 list 로 변환합니다. iterator 는 iterable 이기 때문에 map 을 인자로 사용할 수 있습니다.
다만 iterator 는 위의 언급대로 한번 소비된 아이템으로 되돌아 갈 수 없으므로, list(map) 한번 하고 나면, 사용된 map 이 empty 가 됩니다.

똑같은 예시로,
s = map(int, (1,2))
for i in s:
print(i)

for i in s:
print(i)

를 실행해보시면, 두 번째 for 문에서는 아무것도 출력되지 않습니다.
2022/08/25 23:49
2 비공개
1 // 감사합니다. 한번 콜하면 휘발되는군요. 덕분에 좋은걸 알았습니다!
2022/08/26 07:33
3 비공개

2022/08/29 21:36
4 비공개
1//
2022/09/26 18:25
메뉴 목록 맨위로 로그인
TE31.COM ⓒ 2002-2023
서버 부하 11.25%