https://docs.python.org/2/tutorial/datastructures.html#the-del-statement
예제는 여기서 사용했습니다.
https://www.learnpython.org/en/Map,_Filter,_Reduce
map, filter, reduce: 리스트와 함께 사용하면 좋은 Functional Programming Tools
map(function, *iterables)
iterables의 items를 function에 넣었을 때 결과들을 return한다.
리스트로 바꾸고 싶다면 list()로 감싸준다.
list(map(function, *iterables))
map 예제1
#애완동물 이름 목록을 대문자로 바꾸기
my_pets = ['alfred', 'tabitha', 'william', 'arla']
list(map(lambda x:x.upper(), my_pets)) # ['ALFRED', 'TABITHA', 'WILLIAM', 'ARLA']
function이 두 개 이상의 argument를 필요로 한다면
map(function, iterable, iterable, ...)
map 예제2
# 첫 번째 요소는 소수점 이하 한 자리, 두 번째 요소는 소수점 이하 두 자리, ..반복
# round(값, 소수점 몇 번째 자리까지)
circle_areas = [3.56773, 5.57668, 4.00914, 56.24241, 9.01344, 32.00013]
list(map(round, circle_areas, range(1, 3))) # [3.6, 5.58]
sequence들의 length가 다르면 -> length가 짧은 iterable까지만 반복하고 끝남
map 예제3
# map()으로 zip() 기능 만들기
my_strings = ['a', 'b', 'c', 'd']
my_numbers = [1, 2, 3, 4, 5]
# zip으로 [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
print(list(zip(my_strings, my_numbers)))
# map으로 [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
print(list(map(lambda x,y: (x,y), my_strings, my_numbers)))
filter(function, iterable)
iterable의 items를 function에 넣었을 때 true인 것만 return한다. (true인 iterable만 필터링하여 return)
리스트로 바꾸고 싶다면 list()로 감싸준다.
list(filter(function, iterable))
filter 예제1
# 75점 이상만 필터링
scores = [66, 90, 68, 59, 76, 60, 88, 74, 81, 65]
def filter_scores(score):
return score >= 75 #True or False
list(filter(filter_scores, scores)) # [90, 76, 88, 81]
filter 예제2
# 앞으로 읽어도 뒤로 읽어도 똑같은 단어 찾기
dromes = ("demigod", "rewire", "madam", "freer", "anutforajaroftuna", "kiosk")
list(filter(lambda word:word == word[::-1], dromes)) # ['madam', 'anutforajaroftuna']
reduce(function, iterable[, initial])
sequence의 처음 두 item를 function에 넣어 단일 값으로 return한다(두 개를 넣으면 하나로 반환)
iterable이 끝날 때까지 반복
reduce는 functools 패키지를 임포트 해야 한다.
from functools import reduce
reduce 예제1
# reduce()로 sum() 기능 만들기
numbers = [3, 4, 6, 9, 34, 12]
reduce(lambda x, y:x+y, numbers)
iterable에 item이 하나일 때 -> 그 값 하나를 return
iterable 가 비어있을 때 -> exception 발생
exception 발생 안하게 하려면 -> 세 번째 argument를 이용(빈 iterable에 대한 return 값/ iterable의 초기값)
reduce(function, iterable, initial)
Exercise 예제
from functools import reduce
# Use map to print the square of each numbers rounded
# to three decimal places
my_floats = [4.35, 6.09, 3.25, 9.77, 2.16, 8.88, 4.59]
print(list(map(lambda x:round(x**2, 3) ,my_floats)))
# # Use filter to print only the names that are less than
# # or equal to seven letters
my_names = ["olumide", "akinremi", "josiah", "temidayo", "omoseun"]
print(list(filter(lambda st: len(st)<8, my_names)))
# # Use reduce to print the product of these numbers
my_numbers = [4, 6, 9, 23, 5]
print(reduce(lambda x,y:x*y, my_numbers))
+ lambda에 조건을 적으면 boolean값으로 return 된다
my_names = ["olumide", "akinremi", "josiah", "temidayo", "omoseun"]
# [True, False, True, False, True]
list(map(lambda st: len(st)<8, my_names))
'Python' 카테고리의 다른 글
[Python] OS 모듈 (0) | 2024.07.02 |
---|---|
[Python] Lambda Expressions (0) | 2024.06.26 |
[Python] List methods (0) | 2024.06.24 |
[Python] List Comprehensions (0) | 2024.06.23 |
[Python] VSCode에서 파이썬 가상환경 만들기 (0) | 2024.06.20 |