1. pass와 continue의 차이
for i in range(5):
if i % 2 == 0:
pass # 아무것도 하지 않음
print(i)
# 0
# 1
# 2
# 3
# 4
for i in range(5):
if i % 2 == 0:
continue # 하단의 코드를 실행하지 않고 넘어가 상단의 반복문을 마저 실행함
print(i)
# 1
# 3
2. 부동소수점의 오차
컴퓨터에서 부동소수점 숫자들은 2진 분수로 표현되기에 꽤 많은 값은 정확히 표현될 수 없다. 그렇기에 사람이 이해하기 쉽게 입력하는 10진 부동소수점 숫자는 2진 부동소수점 숫자로 근사 된다.
부동소수점의 오차를 해결하기 위해서 자주 사용되는 함수는 round()와 math 모듈의 math.isclose()가 있다.
round()는 기본적으로 ROUND_HALF_EVEN이라는 모드로 지정되어 있고 이는 짝수랑 가까워지는 방향으로 동작한다.
math.isclose(a, b, rel_tol=1e-9, abs_tol=0.0) 같은 형태이며 a와 b는 비교할 값들, rel_tol은 relative tolerance, abs_tol은 absolute tolerance다. 두 개의 전달 인자들이 소수점 9자리까지 같다면 동일한 것으로 간주된다.
print(round(0.125, 2)) # 0.12
print(round(0.135, 2)) # 0.14
#------------------------------------------------#
a = 0.100000001+0.200000001
if a == 0.3:
print('True')
elif round(a, 1) == 0.3:
print('True: round() 사용') # True: round() 사용
else:
print('False')
print(a == 0.3) # False
#------------------------------------------------#
import math
print(math.isclose(0.100000001+0.200000001, 0.3)) # False
math.isclose(0.100000000+0.200000000, 0.3) # True
출처: https://blog.winterjung.dev/2020/01/06/floating-point-in-python
https://docs.python.org/3/library/math.html#math.isclose
3. List Comprehension 안의 조건문
[식 for 변수 in 리스트 for 변수 in 리스트]
>> a = [i * j for i in range(2, 10) for j in range(1, 10)]
>> a
결과 : [2, 4, 6, 8, 10, …, 81]
4. complex(복소수형)
실수부(real)와 허수부(imag)로 구분. 허수부를 j로 표현
ex) 3 + 5j
5. 서식지정자
“문자열 %s 문자열”%”추가문자”
>> “I am %s, 29 years old”%”tom”
결과 : 'I am tom, 29 years old'
6. List
>> a = [1, 2, 3, 4, 5]
>> del a[1:4] # 삭제
결과 : [1, 5]
>> a.extend([7, 8]) # 요소 추가하기
결과 : [1, 2, 3, 4, 5, 6, 7, 8]
>> a = [3, 2, 5, 4, 1]
>> a.reverse() # 순서 뒤집기
결과 : [1, 4, 5, 2, 3]
>> keys = [“name”, “age”, “address”]
>> user = [“jason”, “29”, “seoul”]
>> info = dict(zip(keys, user)) # 리스트 합치기
>> print(info)
결과 : {‘name’: ‘jason’, ‘age’: 29, ‘address’: ‘seoul}
7. Dictionary
>> score = dict(name=“sosin”, python= 80, java= 30)
결과 : { “name”: “sosin”, “python”: 80, “java” : 30}
>> len(score) # 키의 개수
결과 : 3
>> score.setdefault(“age”, 34) # 키, 값 추가하기
결과 : { “name”: “sosin”, “python”: 80, “java” : 30, “age”: 34 }
>> score.update({“name”: “jason”} # 수정하기
결과 : { “name”: “jason”, “python”: 80, “java” : 30, “age”: 34 }
>> score.pop('java', 0) # 키 삭제 pop(키, 기본값), 30
결과 : {'name': 'jason', 'python': 80, 'age': 34}
8. Set
>> set(“animal”)
결과 : { “a”, “n”, “i”, “m”, “l” }
>> a = {1,2,4}
>> a.isdisjoint({3, 4, 5}) # 겹치는 요소 확인
결과 : False
>> a = {1,2,3,4}
>> a.discard(3) # 삭제하기
결과 : {1,2,4}
9. match / case 선택문
특정 변수값의 여러 사례(case)를 미리 정의해놓고 분기처리. 구조적 패턴 매칭. C언어의 switch / case와 동일
command = 'load'
match command:
case 'quit':
print('프로그램 종료')
case 'load':
print('파일 로드') # 파일 로드
case _:
print('명령 정의되지 않음')
10. split()은 list로 안 담아줘도 자동으로 그리 생성됨
>> number_str = '13 22 38 44'
>> number_str.split()
결과 : ['13', '22', '38', '44']
11. filter(함수, 리스트)
리스트 내 요소들을 하나씩 함수에 넣어, True인 경우만 새 리스트에 담아 반환
>> list(filter(lambda x: x < 5, range(10))) # [x for x in range(10) if x < 5]과 동일
결과 : [0,1,2,3,4]
12. 언패킹
>> print(*[1,2,3,4]) # 리스트 언패킹 *
결과 : 1 2 3 4
딕셔너리 언패킹 **
def func(**kwargs):
for k in kwargs:
print(k, kwargs[k], end='\n')
func(**{'1번':'동희', '2번':'양순', '3번':'지예', '4번':'지연'})
# 1번 동희
# 2번 양순
# 3번 지예
# 4번 지연
13. 재귀함수 안에 종료 조건 무조건 써주기
def recursive_func(end):
if end == 0:
return
print('재귀함수')
recursive_func(end - 1)
recursive_func(5)
# 재귀함수
# 재귀함수
# 재귀함수
# 재귀함수
# 재귀함수
14. DocString
함수 정의할 때 함수에 대한 설명을 적어줌. IDE(VS Code)에서만 볼 수 있음
class Person:
"""
이 클래스는 사람을 분류하는 'Person' 클래스입니다.
""“
15. Module < Package < Library < Framework 정의
Module: 함수나 변수 또는 클래스를 모아 놓은 파일. 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 .py 파일
Package: 특정 기능과 관련된 여러 모듈들의 집합
Library: 파이썬에 기본적으로 설치된 모듈과 내장 함수를 묶어서 파이썬 표준 라이브러리(Python Standard Library, PSL)라 함
Framework: 특정 프로그램을 개발하기 위한 컴파일러, 편집기, 라이브러리 등의 집합
'SeSAC 금융데이터 분석가 > 파이썬 프로그래밍' 카테고리의 다른 글
8/26 금 ft. sh, crontab(리눅스 예약작업) (0) | 2022.08.26 |
---|---|
8/25 목 ft. OpenSSH Key (0) | 2022.08.25 |
8/24 수 (0) | 2022.08.24 |