_won_
wonprogrammer
_won_
전체 방문자
오늘
어제
  • 분류 전체보기
    • woncoding
      • TIL
      • WIL
    • source Code
      • Python
      • Programmers
      • BAEKJOON

블로그 메뉴

  • 방명록

티스토리

Github · Wonprogrammer
hELLO · Designed By 정상우.
_won_

wonprogrammer

woncoding/TIL

TIL | 9.2.금 [튜플 / 집합 / f-string / 예외처리 / 파일분리 / map, lambda, filter / class]

2022. 9. 2. 23:35

- python 기초 문법

 

1. 튜플

리스트와 매우 비슷 하지만 List = [가변형] / Tuple = (불변형)

 

 


 

 

 

2. 집합

리스트 or 튜플 등 집합으로 선언 👉 set(변수명) 

set_a = set(student_a)
set_b = set(student_b)

선언 후 교집합 / 차집합 / 합집합 값 print

print(set_a & set_b)
print(set_a - set_b)
print(set_a | set_b)

 

 


 

 

 

 

3. f-string

출력시 문장을 하나의 형태로 표현 할 수 있다.

print(f'{변수명}는 첫번째 변수이고, {변수명}는 두번째 변수 출력 형태이다') 

👉 결과값 : 000는 첫번째 변수이고, 000는 두번째 변수 출력 형태이다

 

 

 


 

 

 

 

 

4. 예외처리

 

try - except 로 구성 

조건문 반복문 등 특정 알고리즘 진행시 예외발생으로 프로그램 중단이 아닌, 예외처리에 해당되는 행동을 시켜 멈추지 않고 이후 정상적인 구문에서는 계속해서 실행되는 구문

for i in people :
    try :
        if i['age'] > 20 :
            print(i['name'])
    except:
        print(i['name'] + ' : 에러입니다.')

age값이 없는 예외 값에선 "name 에러입니다." 출력 후 계속해서 if 문 실행

 

 

 

 

 


 

 

 

 

 

5. 파일분리

 

function  /  test(동작) 으로 파일을 분리해 복잡한 함수 구문은 function에 몰고, 내가 해야 할 동작은 test에서 실행한다.

[function] 

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

 

[test]

from function import *   👉 파일 분리를 위한 필수 import 값

say_hi()

 

 

 


 

 

 

 

 

6. map / lambda / filter

 

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 '청소년'

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



# filter
result_filter = filter(check_adult, people)  👉 if/else 모두 True 값이기 때문에 모든 딕셔너리가 출력된다 
print(list(result_filter))  👉 '성인'도 '청소년'도 모두 유효한 값



------------------------------------------------------------------------------------

👉 정의된 def 함수가 아닌 lambda를 이용해 조건 처리


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

result_lambda_x = map(lambda x : x['age']>20 , people)    👉 통상적으로 x 가 쓰인다.
print(list(result_lambda_x))




# filter
result_filter = filter(lambda person : person['age']>20 , people)
print(list(result_filter))

map : 인자를 받아와 해당 함수에 인자를 넣어 실행 (for문 과 비슷)

👉 변수명 = map(함수 , 인자)

 

filter : 인자를 받아와 해당 함수에 인자를 넣어 False / True 값 중 True값 만 반환

👉 변수명  = filter(함수명 or lambda로 정의 , 인자)

 

lambda : 간단한 함수는 따로 def로 정의하지 않고 lambda로 간결하게 표현

👉 변수명 = map(lambda x : x 조건 , 인자)     :     인자가 조건에 해당하면 그 값을 가져와라 'x'는 인자명 과 같으면 안됨 

 

 

 

 

 


 

 

 

 

7. class

 

하나의 틀 안에 다양한 속성들이 있을때 def는 그저 하나의 특성을 묶어 표현한다면 class는 그 특성들을 묶어 하나의 틀로 만드는 행위

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

 

👉 예) 게임 속 몬스터의 데미지가 100부터 시작해서 0으로 줄어들게 되면 죽는 게임이라면, Monster가 가지고 있는 특성들 즉, hp와 현재의 상태 들을

 

 

class Monster() :

👉 class로 묶어서 표현 한 후,

 

 

m1 = Monster()
m1.damage(150)
m1.status_check()

m2 = Monster()
m2.damage(80)
m2.status_check()

👉 다음으로 몬스터를 정의하면

m1, m2 = Monster 로 정의되고, 그 안에 있는 특성인 damage, status_check 를 나타낼 수 있다.

 

+ 정의되지 않은 다른 변수 예) m3 는 m3.damage or m3.status.check를 나타낼 수 없다.

 

 

 

 


 

 

 

 

+ 한줄처리 

간단한 조건 / 반복문은 한 줄로 정리 할 수 있다.

 

[if 한줄처리]

num = 3

if num % 2 == 0 :
    result = '짝수'
else:
    result = '홀수'

short = ('짝수' if num % 2 == 0 else '홀수')  👉 '참 결과값' if 참 조건식 else '거짓 결과값'


print(f'{num}은 {result} 입니다')
print(f'{num}은 {short} 입니다')
👉 결과값 동일

 

 

[for 한줄처리]

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

b = []
c = []

for i in a :
    b.append(i*2)

c = [i*2 for i in a_list]   👉  인자가 해야 할 동작 for 인자 in 어디서? 


print(b)
print(c)
👉 결과값 동일

'woncoding > TIL' 카테고리의 다른 글

TIL | 9.6.화 [Python 활용]  (0) 2022.09.06
TIL | 9.5.월 [Python 언어의 이해 / Python 기초]  (1) 2022.09.05
TIL | 9.1.목 [변수 / 리스트 / 딕셔너리 / 조건,반복문 / 함수]  (0) 2022.09.01
TIL | 8.31.수 [1_mini_project]  (0) 2022.08.31
TIL | 8.30.화 [pymongo / Flask]  (0) 2022.08.30
    'woncoding/TIL' 카테고리의 다른 글
    • TIL | 9.6.화 [Python 활용]
    • TIL | 9.5.월 [Python 언어의 이해 / Python 기초]
    • TIL | 9.1.목 [변수 / 리스트 / 딕셔너리 / 조건,반복문 / 함수]
    • TIL | 8.31.수 [1_mini_project]
    _won_
    _won_
    Coding Practice blog

    티스토리툴바