본문 바로가기
코딩 연습/코딩배우기

[python] map과 filter 대신 리스트 컴프리헨션 사용하기

by good4me 2020. 8. 26.

goodthings4me.tistory.com

 

■ map()함수는 함수와 리스트를 인자로 받고, 리스트로부터 원소를 하나씩 꺼내서 함수를 적용시킨 다음, 그 결과를 새로운 리스트에 담아준다.

■ filter()함수는 리스트 원소들을 함수에 적용하여 결과가 True인 값만 뽑아서 새로운 리스트를 만든다.

# map
map1 = map(lambda x: x ** 2, range(5))
print(map1) # <map object at 0x000001F888E494F0>
print(list(map1)) # [0, 1, 4, 9, 16]

# filter
odd_nums = filter(lambda x: x % 2, range(10))
print(odd_nums) # <filter object at 0x000001E985049400>
print(list(odd_nums)) # [1, 3, 5, 7, 9]

# map, filter 사용
map_fil = map(lambda x: x**2, filter(lambda x: x % 2 == 0, range(1, 10)))
print(list(map_fil)) # [4, 16, 36, 64]


# list comprehension
list1 = [n ** 2 for n in range(5)]
print(list1) # [0, 1, 4, 9, 16]

list2 = [n for n in range(10) if n % 2]
print(list2) # [1, 3, 5, 7, 9]

list3 = [n ** 2 for n in range(1, 10) if not n % 2]
print(list3) # [4, 16, 36, 64]

※ map이나 filter가 lambda 함수를 사용하는 반면에 리스트 컴프리헨션을 사용하면 간단하게 결과를 도출할 수 있다.

 

댓글