본문 바로가기

┤내일배움캠프├/PYTHON

파이썬 문법 기초 요약 4(map, filter, lambda식, 함수의 매개변수, 클래스)

728x90

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()
#결과
죽었다
살아있다

 

728x90

google.com, pub-9332256070510669, DIRECT,f08c47fec0942fa0