파이썬, 특정 함수에 적용 가능여부를 어떻게 알아볼 수 있나요?
조회수 1196회
백준 온라인저지에서 알고리즘 막 시작해보려고 하는 초보입니다. 간단한 입출력에 대한 문제를 풀던 도중, 다른 분들이 풀어놓은 짧은 코드를 보다가 map이라는걸 알게되었는데요. 예를 들면..
a = map(int, input().split()) 이런 코드를 쓰면 a라는 변수가 map이라는 객체가 되던데요 이걸 a= list(a) 라고 하면 list형으로 바뀌는 것 같은데..
이렇게 어떤 객체(여기서는 map)이 list와 같은 함수에 적용될 수 있는지 아닌지 알아보는 방법이 있나요? 그냥 무조건 함수에 넣어보고, 안되면 말고 되면 좋고 식으로 해야 하는지 궁금합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
2 답변
-
python3 문서를 보시면 list는 iterable을 받아들일 수 있습니다.
iterable은
__iter__
라는 메소드로 이터레이터를 제공하는 오브젝트라고 하네요. -
당연히 파이썬 api 문서를 참고해야합니다. 파이썬을 사용해보시면 느끼겠지만 기본 라이브러리의 자료성은 상당히 일관성이 있습니다.
문서를 보면 map함수의 결과가 python2는 list고 python3은 generator입니다.
변경된 이유는 큰 list가 되면 메모리 사용량이 크기 때문에 generator로 리턴하는 것으로 변경된 것입니다. 그 뿐만 아니라 range 등도 xrange로 변경되고 generator로 리턴하는 것으로 변경되었습닌다.
댓글 입력