Language&Framework/Python
Python | 파이썬 개념 정리_5
JUNG씨
2022. 9. 14. 17:54
📍try / exception을 활용한 에러 처리
number = input()
try:
10 / int(number)
except: # 에러가 발생했을 때 처리
print(f"{number}은(는) 숫자가 아닙니다.")
except ValueError: # int로 변환하는 과정에서 에러가 발생했을 떄
print(f"{number}은(는) 숫자가 아닙니다.")
except ZeroDivisionError: # 0으로 나누면서 에러가 발생했을 때
print("0으로는 나눌수 없습니다.")
except Exception as e: # 위에서 정의하지 않은 에러가 발생했을 때(권장하지 않음)
print(f"예상하지 못한 에러가 발생했습니다. error : {e}")
# except 문법 또한 if / elif와 같이 연달아서 작성할 수 있습니다.
📍축약식(Comprehension)
긴 코드를 간략하게 줄일수 있다. 남용할 경우 가독성이 떨어지고 추후 코드 관리가 힘들수 있기 때문에 필요할 때만 사용할 것! => list, set, tuple, dict 자료형
# 기본적인 활용 방법
# [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, "man"),
("kim", 23, "man"),
("park", 27, "woman"),
("hong", 29, "man"),
("kang", 26, "woman")
]
#case1
ages = [x[1] for x in people]
sum_ages = sum(ages)
average_age = sum_ages / len(people)
print(average_age) # 27.4
# case2
average_age = sum([x[1] for x in people]) / len(people)
print(average_age) # 27.4
#list 축약식의 []를 ()혹은 {}로 바꿔주면 tuple, set 축약식을 사용하실수 있습니다.
# dictionary 축약식의 구조는 list와 동일하지만, key / value 형태로 지정해야 합니다.
people = {name: {"age": age, "gender": gender} for name, age, gender in people}
print(people)
📍lambda 함수란?
python에서는 익명함수(anonymous function)라고도 함.
=> 주로 map/filter/sort 함수와 함께 사용
1. map 함수 : 함수와 리스트를 인자로 받아 리스트의 요소들로 함수를 호출해준다.
# map은 함수와 리스트를 인자로 받아 리스트의 요소들로 함수를 호출해줍니다.
string_numbers = ["1", "2", "3"]
#case1 : map함수 사용
integer_numbers = list(map(int, string_numbers))
#case2 : for문 사용
integer_numbers = []
for i in string_numbers:
integer_numbers.append(int(i))
#case3 : 축약식 사용
integer_numbers = [int(x) for x in string_numbers]
print(integer_numbers) # [1, 2, 3]
# map 함수 & 람다식 사용
numbers = [1, 2, 3, 4]
double_numbers = list(map(lambda x: x*2, numbers))
print(double_numbers) # [2, 4, 6, 8]
2. filter 함수 : map과 유사한 구조를 가지고 있으며, 조건이 참인 경우에 저장한다.
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
# filter 함수 사용
even_numbers = list(filter(lambda x: x%2 == 0, numbers))
# list 축약식 사용
even_numbers = [x for x in numbers if x%2 == 0]
print(even_numbers) # [2, 4, 6, 8]
3. sort 함수 : list를 순서대로 정렬해준다.
# 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)
]
"""