반응형
질문
map()
를 사용하는 것이 리스트 컴프리헨션보다 나은 이유가 있나요? 그리고 그 반대의 경우도 마찬가지인가요? 어느 것이 일반적으로 더 효율적이거나 Pythonic하다고 생각되나요?
답변
map는 경우에 따라 (람다를 만드는 대신 map과 리스트 컴프리헨션에서 동일한 함수를 사용할 때) 미세하게 더 빠를 수 있습니다. 리스트 컴프리헨션은 다른 경우에 더 빠를 수 있으며 대부분의 (모든 것이 아닌) Pythonista는 더 직접적이고 명확하다고 생각합니다.
동일한 함수를 사용할 때 map의 미세한 속도 이점의 예:
$ python -m timeit -s'xs=range(10)' 'map(hex, xs)'
100000 loops, best of 3: 4.86 usec per loop
$ python -m timeit -s'xs=range(10)' '[hex(x) for x in xs]'
100000 loops, best of 3: 5.58 usec per loop
map이 람다를 필요로 할 때 성능 비교가 완전히 반대로 되는 예:
$ python -m timeit -s'xs=range(10)' 'map(lambda x: x+2, xs)'
100000 loops, best of 3: 4.24 usec per loop
$ python -m timeit -s'xs=range(10)' '[x+2 for x in xs]'
100000 loops, best of 3: 2.32 usec per loop
반응형
댓글