여태 코드를 짜며 list 관련 iter 작업을 하는 것에 대해
answer = []
for elem in listK:
if elem > 0:
answer.append(elem)
따위로 처리했다.
그러다 심심할 땐 코테지! 하면서 프로그래머스를 풀며 성능이란 놈이 눈에 들어오기 시작했고, 모범답안을 보며 뭔가 느낌이왔다.
처음에는 내가 길게 뻘짓하며 작성한 코드를 한 줄에 해결했다는 사실에 현타가 왔다. 그러다가 여러 문제의 답안에서 map()과 []를 자주 사용한다는 사실을 확인했다.
보통 내가 푼 문제들에서 정확도는 나와도 성능이 잘 안 나왔는데, 이것이 위의 것들과 관련이 있지 않을까 하여 찾아보았다.
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/)
참고[google]:(https://leadsift.com/loop-map-list-comprehension/)
for entry in entries:
process(entry)
#for 문
map(process, entries)
#map 문
[process(entry) for entry in entries]
#list comprehension
결과
map > for > []
for > [] > map
for > [] > map
results = []
for entry in entries:
results.append(process(entry))
#for 문
results = map(process, entries)
#map 문
results = [process(entry) for entry in entries]
결과
map > [] > for
[] > for > map
[] > for > map