11. map
map 함수 : 리스트의 모든 원소를 조작하라
문제 아래 3가지 방식으로 표현 가능
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}
]
11-1.
def check_adult(person):
if person['age'] > 20:
return '성인'
else:
return '청소년'
result = map(check_adult, people) # people 하나 하나를 check_adult 함수에 넣어라
print(list(result)) # 그 결과값은 리스트로 줘
#결과
['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']
11-2.
def check_adult(person):
return '성인' if person['age'] > 20 else '청소년'
result = map(check_adult, people)
print(list(result))
#결과
['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']
11-3. 아래는 lambda
result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
# x는 person임. 고로 lambda식의 의미는 "people을 x에 넣어서, (조건)을 충족해서 결과값 달라"
print(list(result))
#결과
['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']
11-4. Filter
리스트의 모든 원소 중 특별한 것만 뽑기 (map과 유사함, true만 뽑아옴)
result = filter(lambda x: x['age'] > 20, people) # 조건 충족하는 것만 추출(말 그대로 필터 기능)
print(list(result))
#결과
[{'name': 'carry', 'age': 38}, {'name': 'ben', 'age': 27}, {'name': 'bobby', 'age': 57}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25}]
12. 함수의 매개변수 (라이브러리 활용도 높음)
12-1. 함수에 디폴트 값(b=3) 지정하면, a만 지정해도 알아서 계산
def cal2(a, b=3):
return a + 2 * b
print(cal2(4))
#결과 10
12-2. 값 지정 안 하고 모두 받는 방법 *args (arguments 줄임)
def call_names(*args):
for name in args:
print(f'{name}야 밥먹어라~')
call_names('철수','영수','희재')
#결과
철수야 밥먹어라~
영수야 밥먹어라~
희재야 밥먹어라~
12-3. 키워드 인수 여러 개 받는 방법 **kwargs (딕셔너리로 만들어줌)
def get_kwargs(**kwargs):
print(kwargs)
get_kwargs(name='bob')
get_kwargs(name='john', age='27')
#결과
{'name': 'bob'}
{'name': 'john', 'age': '27'}
13. 클래스
인스턴스(예시에서는 몬스터 한 마리)들이 모여있는 클래스
함수로 인스턴스의 속성을 만듦
# 몬스터의 HP에 따른 생사여부 확인
class Monster():
hp = 100 # 몬스터는 HP를 100 갖고 있다
alive = True # 몬스터는 처음에는 무조건 살아있다
def damage(self, attack):
self.hp = self.hp - attack # 내(self) HP가 공격 받았을 때
if self.hp < 0: # attack이 100(HP)보다 크면
self.alive = False # alive 상태를 T가 아닌 F로 바꿔줘
def status_check(self):
if self.alive:
print('살아있다')
else:
print('죽었다')
m = Monster()
m.damage(120)
m2 = Monster()
m2.damage(90)
m.status_check()
m2.status_check()
#결과
죽었다
살아있다
'┤내일배움캠프├ > PYTHON' 카테고리의 다른 글
파이썬 요약 1 (print, 연산자, 비트연산, 슬라이스, 변환) (4) | 2025.05.15 |
---|---|
[연습] 파이썬 반복문 연습하기 (0) | 2025.04.30 |
파이썬 문법 기초 요약 3(튜플, 집합, f-string, try-except, import, 한줄쓰기 ) (0) | 2025.04.22 |
파이썬 문법 기초 요약 2(조건문, 반복문, 함수) (0) | 2025.04.22 |
파이썬 문법 기초 요약 1(변수, 문자열, 리스트, 딕셔너리) (0) | 2025.04.21 |