728x90
map, reversed와 같은 함수에서 반환하는 Iterator 객체는 한 번 사용되면 지워진다. 즉, 일회성이라고 할 수 있다.
우선 map을 사용해서 확인해보자.
arr = map(int, input().split())
max_ = max(list(arr))
print(list(arr))
위 코드를 보면 arr에 입력한 숫자들을 int형으로 변환한 iterator 객체를 저장하고 max_에 최댓값을 저장한다는 것을 알 수 있다. 그리고 arr를 리스트로 출력하면 빈 리스트([])가 나온다. 왜일까??
차례대로 확인해보자.
- arr에 iterator가 저장된다.
- max_에 arr안에 있는 숫자들 중 최댓값이 저장된다. 이때 arr에 저장된 iterator 객체가 사용되었다고 생각하자.
- arr를 리스트로 출력한다.
위 과정을 확인해보면 iterator 객체가 max로 최댓값을 구할 때 한 번 사용되고 지워졌다는 것을 유추할 수 있다. 그렇다면 어떻게해야 지워지지 않을까? 방법은 간단하다. arr에 Iterator를 저장하는 것이 아닌 리스트로 저장하면 된다.
따라서 다음과 같이 수정할 수 있다.
arr = list(map(int, input().split()))
max_ = max(arr)
print(arr)
똑같이 reversed를 사용해서 확인해보자.
a = [1, 2, 3, 4]
b = reversed(a)
print(max(b))
print(list(b))
위 코드에서도 max에서 iterator객체 b가 한 번 사용되었기때문에 빈리스트가 출력된다.
수정하면 다음과 같다.
a = [1, 2, 3, 4]
b = list(reversed(a))
print(max(b))
print(b)
728x90
'Python' 카테고리의 다른 글
[PEP8] Comments (0) | 2022.02.26 |
---|---|
[PEP8] When to use trailing commas (0) | 2022.02.25 |
[PEP8] Whitespace in Expressions and Statements (0) | 2022.02.07 |
[PEP8] String Quotes (0) | 2022.02.07 |
[PEP8] Code Lay-out (0) | 2022.02.04 |