Sparta Coding Club/Today I Learned [TIL]
[TIL] #DAY - 011 - 파이썬 심화과정(2) (내일배움캠프AI 3기, try / except, stacktrace, 축약식, lambda / map / filter / sort)
양한마리
2022. 9. 14. 21:18
728x90
파이썬 심화과정 둘째날!
오늘도 역시나 어려운 코딩의길
아침마다 실시간 강의 듣다보니 너무 졸리고 힘들다..
오늘 듣는 내용들은 어찌나 귀에 안들어오는지 복습해서 맞추는데 힘들었다.
내일부터는 좀 더 더 더 더 집중해서
화이팅 해보자고
Python 강의 5일차
- Python 언어의 이해
- Python 기초
- Python 활용
- Python 심화
- class에 대한 이해
- mutable 자료형과 immutable 자료형
- ↑ 4일차 수업 끝
- ↓ 5일차 수업 시작
- try / except을 활용한 에러 처리
- python에서는 try / except 문법을 사용해 에러가 발생했을 때 처리를 해줄수 있습니다.
- 에러 종류에 따라 다른 로직 처리
- except ValuError : int로 변환하는 과정에서 에러가 발생했을 때
- except ZeroDivisionError : 0으로 나누면서 에러가 발생했을 때
- except Exception as e : 따로 정의하지 않은 에러가 발생했을 때 (권장하지 않는 방법)
- as e : 에러코드를 'e' 에 담아낸다.
- stacktrace의 이해
- stacktrace란?
- stacktrace는 python 뿐만이 아닌 대부분의 개발 언어에서 사용되는 개념입니다.
- 에러가 발생했을 때 에러가 발생 한 위치를 찾아내기 위해 호출 된 함수의 목록을 보여주고 개발자는 stacktrace를 따라가며 에러가 발생한 위치를 추적할 수 있습니다.
- stacktrace란?
- 축약식(Comprehension)
- 축약식이란?
- 축약식은 긴 코드를 간략하게 줄일수 있다는 장점이 있지만, 남용할 경우 가독성이 떨어지고 추후 코드 관리가 힘들수 있기 때문에 필요할 때만 사용하는 것을 권장합니다.
- list, set, tuple, dict 자료형이 축약식을 지원합니다.
- 기본적인 구조는 똑같으며, 어떤 괄호 기호를 사용하는지 / 어떤 형태로 사용하는지에 따라 저장되는 자료형이 달라집니다.
- 축약식은 모두 동일한 구조를 가지고 있기 때문에 한 가지 자료형에 익숙해지면 다른 자료형에도 적용해서 사용할 수 있습니다.
- list / tuple / set 축약식 활용법 (참고자료1)
- dictionary 축약식 활용법 (참고자료2)
- 축약식이란?
- lambda / map / filter / sort 활용하기
- lambda 함수란?
- python에서 lambda 함수는 다른 말로 익명 함수(anonymous function)라고도 불립니다.
- lambda 함수는 주로 map / filter / sort 함수와 함께 사용됩니다.
- map / filter / sort 활용 (참고자료3)
- lambda 함수란?
list / tuple / set 축약식 활용법 (참고자료1)
# 기본적인 활용 방법
# [list에 담길 값 for 요소 in 리스트]
numbers = [x for x in range(5)] # [0, 1, 2, 3, 4]
# 조건문은 축약식 뒷부분에 작성하며, 축약식이 True인 경우 list에 값이 담긴다.
even_numbers = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
# 아래와 같이 활용할 수도 있다.
people = [
("lee", 32),
("kim", 23),
("park", 27),
("hong", 29),
("kang", 26)
]
average_age = sum([x[1] for x in people]) / len(people)
print(average_age) # 27.4
#list 축약식의 []를 ()혹은 {}로 바꿔주면 tuple, set 축약식을 사용하실수 있습니다.
dictionary 축약식 활용법 (참고자료2)
# dictionary 축약식의 구조는 list와 동일하지만, key / value 형태로 지정해야 합니다.
people = [
("lee", 32, "man"),
("kim", 23, "man"),
("park", 27, "woman"),
("hong", 29, "man"),
("kang", 26, "woman")
]
people = {name: {"age": age, "gender": gender} for name, age, gender in people}
print(people)
# result print
"""
{
'lee': {'age': 32,
'gender': 'man'},
'kim': {'age': 23,
'gender': 'man'},
'park': {'age': 27,
'gender': 'woman'},
'hong': {'age': 29,
'gender': 'man'},
'kang': {'age': 26,
'gender': 'woman'}
}
"""
map / filter / sort 활용 (참고자료3)
# map 함수 활용
# map은 함수와 리스트를 인자로 받아 리스트의 요소들로 함수를 호출해줍니다.
string_numbers = ["1", "2", "3"]
integer_numbers = list(map(int, string_numbers))
print(integer_numbers) # [1, 2, 3]
# map 함수를 사용하지 않는 경우 아래와 같이 구현할 수 있습니다.
string_numbers = ["1", "2", "3"]
integer_numbers = []
for i in string_numbers:
integer_numbers.append(int(i))
print(integer_numbers) # [1, 2, 3]
# list 축약식으로도 동일한 기능을 구현할 수 있습니다.
# map과 list 축약식 중 어떤걸 써야 할지 고민된다면 이 글을 읽어보시는것을 추천합니다.
string_numbers = ["1", "2", "3"]
integer_numbers = [int(x) for x in string_numbers]
print(integer_numbers) # [1, 2, 3]
# map 함수와 lambda 함수를 함께 사용하면 더 다채로운 기능을 구현할 수 있습니다.
numbers = [1, 2, 3, 4]
double_numbers = list(map(lambda x: x*2, numbers))
print(double_numbers) # [2, 4, 6, 8]
==========================================================================
# filter 함수 활용
# filter 함수는 map과 유사한 구조를 가지고 있으며, 조건이 참인 경우 저장합니다.
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
even_numbers = list(filter(lambda x: x%2 == 0, numbers))
print(even_numbers) # [2, 4, 6, 8]
# filter 함수 또한 list 축약식으로 동일한 기능을 구현할 수 있습니다.
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
even_numbers = [x for x in numbers if x%2 == 0]
print(even_numbers) # [2, 4, 6, 8]
==========================================================================
# sort 함수 활용
# sort 함수를 사용하면 list를 순서대로 정렬할 수 있습니다.
numbers = [5, 3, 2, 4, 6, 1]
numbers.sort()
print(numbers) # [1, 2, 3, 4, 5, 6]
# sort와 lambda 함수를 같이 사용하면 복잡한 구조의 list도 정렬할 수 있습니다.
people = [
("lee", 32),
("kim", 23),
("park", 27),
("hong", 29),
("kang", 26)
]
# 나이 순으로 정렬하기
people.sort(key=lambda x: x[1])
print(people)
# result print
"""
[
("kim", 23),
("kang", 26),
("park", 27),
("hong", 29),
("lee", 32)
]
"""
09/14 파이썬 과제
파이썬 심화 문법 사용해보기
아래 과제는 모두 클래스를 활용해서 풀어주세요
1. 계산기 심화
요구조건
- 클래스를 활용해 작성했던 계산기 코드를 활용해주세요
- 기존처럼 사용자의 입력을 받고 출력하되, try / except를 활용해 사용자의 입력을 검증하는 코드를 추가해주세요
- 두 번쨰 숫자에 0을 입력하고 나누기를 시도할 경우 “0으로 나눌 수 없습니다” 문구를 출력해주세요
- 숫자가 아닌 다른 값을 입력했을 경우 “숫자만 입력 가능합니다” 라는 문구를 출력해 주세요
과제 링크 : [Python] 활용편 - 07 - try / except 활용(계산기 심화)
2. 리스트 필터 및 정렬
요구조건
- filter 혹은 리스트 축약식을 사용해 코드를 작성해주세요
- 제공 된 사용자들 중 나이가 20살 미만인 사람들은 제외해주세요
- 사용자들을 나이 순으로 정렬해주세요
과제 링크 : [Python] 활용편 - 08 - list, filter, sort 활용(리스트 필터 및 정렬)
오늘은 과제는 되는데 알고리즘이 안풀리네..
수학 .... 수학....
728x90
반응형