반응형
질문
나는 목록을 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)
반응형
댓글