"for vs map() vs [](list comprehension"

최기환·2020년 3월 11일
2

Python

목록 보기
2/2

1. Python 성능


여태 코드를 짜며 list 관련 iter 작업을 하는 것에 대해

answer = []
for elem in listK:
    if elem > 0:
        answer.append(elem)

따위로 처리했다.

그러다 심심할 땐 코테지! 하면서 프로그래머스를 풀며 성능이란 놈이 눈에 들어오기 시작했고, 모범답안을 보며 뭔가 느낌이왔다.

처음에는 내가 길게 뻘짓하며 작성한 코드를 한 줄에 해결했다는 사실에 현타가 왔다. 그러다가 여러 문제의 답안에서 map()과 []를 자주 사용한다는 사실을 확인했다.

보통 내가 푼 문제들에서 정확도는 나와도 성능이 잘 안 나왔는데, 이것이 위의 것들과 관련이 있지 않을까 하여 찾아보았다.

2. map vs for


def squareNum(a):
    return a*a

listTest = [0, -1, 3, 4.5, 99, .08]

x = map(squareNum, listTest)
# map을 사용할 경우

for i in listTest:
    square = i*i
    print(i)
# for문으로 돌릴 경우

위의 경우 작은 값을 비교했지만 map이 for 보다 0.02sec 빠른 결과를 보였다. 대용량 처리 시에는 그 차이가 훨씬 커질 것이겠지만...

이것만으로는 뭔가 사용법이 명확하지 않아 다른 자료를 좀 더 찾아봤다.

참고[google]:(https://www.geeksforgeeks.org/python-map-vs-for-loop/)

3. Result 유무에 따른 사용


참고[google]:(https://leadsift.com/loop-map-list-comprehension/)

  1. 결과가 필요 없는 경우

for entry in entries:
    process(entry)
#for 문

map(process, entries)
#map 문

[process(entry) for entry in entries]
#list comprehension

결과
logo

map > for > []

logo

for > [] > map

logo

for > [] > map

  1. 결과가 필요한 경우

results = []

for entry in entries:
    results.append(process(entry))
#for 문

results = map(process, entries)
#map 문

results = [process(entry) for entry in entries]

결과
logo

map > [] > for

logo

[] > for > map

logo

[] > for > map

profile
개발자를 위한 개발자입니다.

0개의 댓글