프로그래밍
첫 페이지 랜덤 글 회원가입 로그인
비공개 손님 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가 뜨는데..
이유를 알 수 있을까요?
아 궁금해서 잠이 오지 않아요

잡담 | 994명이 읽었어요. 44.200.101.84

0
1 비공개 손님 2022-08-25 23:49:03
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 문에서는 아무것도 출력되지 않습니다.
2 비공개 손님 2022-08-26 07:33:34
1 // 감사합니다. 한번 콜하면 휘발되는군요. 덕분에 좋은걸 알았습니다!
3 비공개 손님 2022-08-29 21:36:21

4 비공개 손님 2022-09-26 18:25:01
1//
댓글을 작성하실 수 없습니다.
(권한이 없는 회원레벨)
목록으로
△ 이전글: Curl 로 A서버에서 B서버로 Request 시 타임아웃이 걸립니다. [8]
▽ 다음글: 개발자 콘솔에서 데이터 뽑는 방법 질문 드려도 될까요 [12]
이용약관 | 광고/제휴 | 개인정보취급방침 | 문의/신고 | 모바일 TE31 | 서버 부하 : 6.5%
실시간 Issue 커뮤니티 TE31 [알지롱] ⓒ 2002-2023
TOP arrow_upward