본문 바로가기
Python/Python FAQ

Python 3.x에서 map()을 사용하여 리스트를 반환하는 방법, Getting a map() to return a list in Python 3.x

by 베타코드 2023. 8. 5.
반응형

질문


나는 목록을 16진수로 매핑한 다음 목록을 다른 곳에서 사용하려고 시도하고 있습니다. Python 2.6에서는 이것이 쉬웠습니다:

A: Python 2.6:

>>> map(chr, [66, 53, 0, 94])
['B', '5', '\x00', '^']

그러나 Python 3.1에서는 위의 코드가 맵 객체를 반환합니다.

B: Python 3.1:

>>> map(chr, [66, 53, 0, 94])
<map object at 0x00AF5570>

Python 3.x에서 (위의 A와 같이) 매핑된 목록을 어떻게 가져올 수 있을까요?

또는 이 작업을 수행하는 더 좋은 방법이 있을까요? 초기 목록 개체에는 약 45개의 항목이 있으며 이를 16진수로 변환하고 싶습니다.


답변


이렇게 하세요:

list(map(chr,[66,53,0,94]))

Python 3+에서는 iterable을 반복하는 많은 프로세스가 자체적으로 이터레이터를 반환합니다. 대부분의 경우, 이렇게 하면 메모리를 절약하고 작업이 더 빨리 진행됩니다.

이 리스트를 최종적으로 반복할 것이라면, 심지어 리스트로 변환할 필요도 없습니다. 왜냐하면 map 객체를 그대로 반복할 수 있기 때문입니다:

# "ABCD"를 출력합니다.
for ch in map(chr,[65,66,67,68]):
    print(ch)
반응형

댓글