본문 바로가기

SeSAC 금융데이터 분석가/파이썬 프로그래밍

8/23 화

728x90

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]

출처: https://wikidocs.net/46742
출처: https://blog.naver.com/kut_da_92/222688067301

 

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: 특정 프로그램을 개발하기 위한 컴파일러, 편집기, 라이브러리 등의 집합

728x90

'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