[사전캠프 TIL]#5 set, map, lambda, filter, if/for문 한줄 표현, 클래스

테리·2025년 10월 13일
post-thumbnail

1. 학습 주제

파이썬 기본기: set, f-string, if/for문 한줄 표현, map, lambda, filter, 매개변수, 클래스

2. 학습 내용

집합(set)

  • 중복을 제거하고 집합을 구현함. ex) a= [1,2,2,3]일때 set(a)
a = [1, 2, 3, 4, 5]
b = [1, 2, 2, 6, 7]

a_set = set(a)
b_set = set(b)

print(a_set & b_set)  # 교집합
print(a_set | b_set)  # 합집합
print(a_set - b_set)  # 차집합

f-string

ex) print(f'{name}은 {score}점입니다')

예외 처리(try-except)

  • 에러가 있어도 건너뛰게 할 수 있는 방법
ex) 
for i in list:
	try:
    	print(i)
    except:
    	print('에러')

파일 불러오기

  • .py로 저장한 파일에서 원하는 함수 불러오기
  • say_hi라는 함수를 다른 파일에서 만든경우

from 파일명 import *
또는
from 파일명 import say_hi

한줄로 작성하기

  • if 한줄 예시
num = 3
if num % 2 == 0:
    result = '짝수'
else:
    result = '홀수'
#
result = ('짝수' if num % 2 == 0 else '홀수')
  • for 한줄 예시
a_list = [1,3,2,5,1,2]
#
b_list = []
for a in a_list:
    b_list.append(a*2)
#
b_list = [a*2 for a in a_list]

map

map(적용시킬 함수, 적용할 요소들)

map(check_adult, people) # people을 돌면서 check_adult를 하나씩 넣어라

lambda

함수를 만드는 것 대신 lambda식 사용.
lambda식에 만든 함수를 사용해도 됨.

map(lambda x: '성인' if x['age'] > 20 else '청소년', people)
map(lambda x: check_adult(x), people)
결과 ex) ['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']

filter

map과 아주 유사한데, True인 것들만 뽑기

filter(lambda x: x['age'] > 20, people)
결과 ex) [{'name': 'carry', 'age': 38}, {'name': 'ben', 'age': 27}]

매개변수(args, kwargs)

args: 변수를 무한대로 받을 수 있음

def call_names(*args):
    for name in args:
        print(f'{name}야 밥먹어라~')

call_names('철수','영수','희재')

kwargs: 키워드 인수를 여러개 받기

def get_kwargs(**kwargs):
    print(kwargs)

get_kwargs(name='bob')
get_kwargs(name='john', age='27')

결과
{'name': 'bob'}
{'name': 'john', 'age': '27'}

클래스

ex)

class Monster():
    hp = 100 # 클래스 속성으로 모든 인스턴스에 동일하게 적용됨.
    alive = True

    def damage(self, attack):
        self.hp = self.hp - attack
        if self.hp < 0:
            self.alive = False

    def status_check(self):
        if self.alive:
            print('살아있다')
        else:
            print('죽었다')

m1 = Monster() # 인스턴스 생성
m1.damage(120)

m2 = Monster()
m2.damage(90)

m1.status_check()
m2.status_check()

3. 배운점 및 생각

  • map 함수에 대해서 인지는 하고 있었지만 자주 사용하지 않아서 손이 잘 가지 않았다. 이번 기회에 조금 더 명확하게 인지하게 됐다.
  • filter를 처음 접해봤기에 파이썬을 사용할 때 바로 떠오르지는 않겠지만 기회가 된다면 적절히 사용해봐야겠다는 생각을 했다.
  • 다른 사람들이 작성한 코드를 보면 클래스로 만드는 경우를 자주 볼 수 있다. 클래스 사용이 능숙하지는 않기에 긴 코드를 작성하는 경우에도 무의식적으로 클래스 사용을 피하는 경우가 종종 발생하는데 자주 시도를 해서 거부감 없이 사용하도록 만들 필요를 느꼈다.

0개의 댓글