map
map(function, iterable)
map 함수의 모양은 위와 같은데 첫 번째 매개변수로는 함수를 쓰고, 두 번째 매개변수로는 반복 가능한 자료형을 쓴다.
map 함수는 뒤에 나온 자료형에서 인자를 하나씩 빼서 앞에 함수를 실행시켜준다. 예제를 통해 살펴보면
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]
def check_adult(person):
if person['age'] > 20: return '성인'
else: return '청소년'
result = map(check_adult, people)
print(list(result))
밑에 result 변수쪽을 보면 people에서 딕셔너리를 꺼내와서 조건문을 실행시켜주는 역할을 하고 있다.
map함수의 반환 값은 map object이기 때문에 list()와 같이 자료형으로 형 변환을 시켜줘야 한다.
lambda
함수를 쓸 때, 복잡하거나 반복되는 코드를 편하게 불러오기 위해서 만드는데
간단한 동작을 하는 가벼운 함수를 만들기 위해 사용되는 함수가 lambda 함수이다.
lambda 인자: 표현식 으로 나타내는데 예제를 보면
result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result))
우선 people은 위의 코드와 똑같이 되어있다.
코드를 살펴보면 people의 인자를 x에 담고 x의 'age'가 20보다 크면 '성인' , 작으면 '청소년'을 반환한다.
위의 check_adult와 똑같은 기능을 하지만 이렇게 한 줄로 줄여 쓸 수 있다.
알고리즘 문제를 풀다가 다른 사람의 풀이에 나온 것을 보아서 복습을 했는데,
map이나 lambda를 써야하는 문제가 나왔을 때 적용해 볼 수 있을 것 같다.
그런 문제가 나왔을 때 빠르게 잡아내서 적용해보고 싶지만 눈치를 잘 못 채는거 같다.
'Python' 카테고리의 다른 글
[Python] string 모듈에 대해서 (0) | 2024.07.10 |
---|---|
[Python] 매직 메소드(special method) (0) | 2024.07.09 |
[Python] Class에 대한 이해 (0) | 2024.07.05 |
[Python] itertools 순열과 조합 (0) | 2024.07.03 |
[Python] 가위바위보 게임 제작 및 Enum(열거형) 클래스 (0) | 2024.07.01 |