- 에러 종류에 따른 로직 처리
- ValueError : 자료형을 변환할 때 '변환할 수 없는 것'을 변환하려고 할 때
- ZeroDivisionError : 0으로 나누면서 에러 날 때
- Exception as e : 위에서 정의하지 않은 에러가 발생했을 때(권장하지 않음), e에 에러가 발생한 이유가 자동으로 작성된다.
- TypeError : 서로 다른 형태의 자료를 연산하게 되면 TypeError 발생
축약식이란?
긴 코드를 간략하게 줄인 식! 남용할 경우 가독성이 떨어지고 코드 관리가 힘들어지기 때문에 필요할 때만 사용
list, set, tuple, dict 자료형이 축약식으로 작성 가능
->구조는 기본적으로 같고, 괄호 기호나 형태에 따라 저장되는 자료형이 달라진다.
list / tuple / set 축약식
: [list에 담길 값 for 요소 in 리스트] 형태
예시1)
예시2)
numbers = [x*2 for x in range(5)]
=> [0, 2, 4, 6, 8]
numbers = [2 for x in range(5)]
=> [2, 2, 2, 2, 2]
count = int(input())
user_inputs = [input() for x in range(count)]
print(user_inputs)
=> count = 5
=> input() = a, b, c, d, e
=> user_intputs = ['a', 'b', 'c', 'd', 'e']
dictionary 축약식 활용법
축약식의 구조는 list와 동일하지만 key/value 형태로 지정해야 한다.
lambda 함수란?
lambda 함수는 다른 말로 익명 함수(anonymous function)라고도 불린다.
lambda 함수는 주로 map / filter / sort 함수와 함께 사용된다.
map 함수란?
map은 함수와 리스트를 인자로 받아 리스트의 요소들로 함수를 호출해준다.(여러 요소에 하나의 함수를 한꺼번에 대응시켜줄 수 있다.)
저장할 변수 = map(함수이름, 대응할 일련의 요소)
첫 번째 인자로 함수의 이름, 두 번째 인자로 여러개 요소가 담긴 일련의 자료를 전달하여 여러개의 요소를 하나씩 개별적으로 함수 적용하지 않아도 되는 편리한 기능이다.
- map 함수를 사용하는 경우
- map 함수를 사용하지 않는 경우
- list 축약식으로 작성하는 경우
map 함수와 lambda 함수를 함께 사용하면?
=> x*2라는 값을 가지고 있는 익명의 lambda함수(x를 인자로 받음)를 map 함수로 numbers의 요소들에 대응시켜 주고 list로 감싼 것이다.
filter 함수란?
map과 유사한 구조를 가지고 있으며, 조건이 참인 경우 저장한다.
예시)
=> x%2라는 값을 가지고 있는 익명의 lambda함수(x를 인자로 받음)를 filter함수로 numbers의 요소들에 대응시켜 주고 참인 결과들만 모아 list로 감싼 것이다.
- 예시를 list 축약식으로 하면?
sort 함수란?
리스트를 정렬해주는 함수
https://blog.naver.com/jin970510/222869505967
예시)
- sort와 lambda함수를 같이 사용하면?
key 옵션 : 어떤 것을 기준으로 정렬 할 것인가에 대한 기준
=> sort에 key라는 값을 줘서 lambda식을 사용한 후(key 다음에는 lambda식이 오게 됨) 결과물을 x[1]로 줌으로써 정렬 기준을 나이로 선택한다.(lambda x의 x에는 ("lee", 32), ("kim", 23) 등의 5개 요소들이 담기게 됨)
- sort에 reverse 사용하는 경우
reverse 옵션 : 오름차순 / 내림차순 결정
-> list.sort ( reverse=False ) 가 디폴트값이며, 오름차순 정렬을 의미하므로 생략했을 때 오름차순 정렬이 되는 것이다.
-> list.sort ( reverse=True ) 로 변경하면 내림차순 정렬을 해준다.
예시)
people.sort(key=lambda x: x[1], reverse=True)로 하면 나이의 역순으로 정렬된다.
- people에서 성이 같은 값들이 있는 경우
people.sort(key=lambda x: (x[0], x[1]))로 하면 x[0]이 1순위 x[1]이 2순위로 정렬된다.
💜 오늘 느끼고 배운 점
오전 : 파이썬 실시간 강의
오후 : 실시간 강의 복습&과제
저녁 : 백준 알고리즘
오늘도 위에 정리한 것처럼 파이썬 심화 내용을 배웠는데 이전에 몇번 봤던 개념들이라 어제(class) 보다는 훨씬 이해하기 수월했다. 그래도 아직 try except를 어디에 넣어야 하는지에 대해 혼동이 있고, dictionary 축약식과 lambda함수는 아직 더 활용해 봐야 확실히 알 수 있을것 같다.