본문 바로가기

학습 내용 정리/python

파이썬 문법 뽀개기 : 심화

728x90

1. 튜플, 집합

튜플은 리스트와 비슷하지만 불변인 자료형. 마찬가지로 순서가 존재

a = (1,2,3)

print(a[0]) # 1

 

집합은 중복이 제거된다.

 

a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1]

a_set = set(a)

print(a_set)  # {1, 2, 3, 4, 5}

 

a = ['사과','감','수박','참외','딸기']
b = ['사과','멜론','청포도','토마토','참외']

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

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

 

2. f-string

for s in scores:
    name = s['name']
    score = str(s['score'])
    print(f'{name}은 {score}점입니다')

 

3. 예외처리

try-except 문

for person in people:
    try:
        if person['age'] > 20:
            print (person['name'])
    except:
        name = person['name']
        print(f'{name} - 에러입니다')

 

4. 파일로 불러오기

main_test.py

from main_func import *

say_hi()

 

main_func.py

def say_hi():
	print('안녕!')

 

5. 한 줄의 마법

삼항연산자

(참일 때 값) if (조건) else (거짓일 때 값)

num = 3

result = "짝수" if num%2 == 0 else "홀수"

print(f"{num}은 {result}입니다.")

 

for문 한방에 써버리기

a_list  = [1, 3, 2, 5, 1, 2]

b_list = [a*2 for a in a_list]

print(b_list)

 

6. map, filter, lambda 식

map 리스트의 모든 원소를 조작하기

def check_adult(person):
    return '성인' if person['age'] > 20 else '청소년'

result = map(check_adult, people)
print(list(result))

 

lambda 함수를 매개변수로 바로 쓰기, 한 줄로 쓰기

result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result))

 

filter 리스트의 모든 원소 중 특별한 것만 뽑기

result = filter(lambda x: x['age'] > 20, people)
print(list(result))

 

7. 함수 심화

 

함수에 인수를 넣을 때, 어떤 매개변수에 어떤 값을 넣을지 정해줄 수 있어요.

def cal(a, b):
    return a + 2 * b

print(cal(3, 5)) # 13
print(cal(5, 3)) # 11
print(cal(a=3, b=5)) # 13
print(cal(b=5, a=3)) # 13

 

특정 매개변수에 디폴트 값을 지정해줄 수 있어요.
def cal2(a, b=3):
    return a + 2 * b

print(cal2(4))
print(cal2(4, 2))
print(cal2(a=6))
print(cal2(a=1, b=7))

 

입력값의 개수를 지정하지 않고 모두 받는 방법

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

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

 

이렇게 여러 개의 인수를 하나의 매개변수로 받을 때 관례적으로 args라는 이름을 사용합니다.

arguments라는 뜻이에요

8. 클래스

아주 많은 것들을 비슷하게 관리해야 할 때 사용

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('죽었다')

m = Monster()
m.damage(120)

m2 = Monster()
m2.damage(90)

m.status_check()
m2.status_check()