더 나은 파이썬 코드를 작성하기 위한 11가지 팁과 요령이라는 유튜브를 시청했다.
시청한 내용에 대해서 정리를 해보고자 한다.
1. range(len(x)) 를 enumerate 로 변경하자.
만약 idx와 item 으로 모두 추적할 경우, enumerate 를 사용하는 것이 간결하고 좋다.
range를 쓰면 len 함수를 추가로 불러와야 하고, 각 원소의 자료구조의 인덱스로 직접 접근해야 한다.
하지만 enumerate는 인덱스와 item을 하나의 튜플 단위로 묶어 출력하기 때문에, 훨씬 pythonic 하다.
변경 전 코드
data = [1,2,3,4]
for i in range(len(data)):
if data[i]<0:
data[i]=0
print(data)
변경 후 코드
data = [1,2,3,4]
for idx, num in enumerate(data):
if num<0:
data[idx]=0
print(data)
2. for 루프 대신 list comprehension 을 사용하자.
만약 루프를 이용해서 list 에 추가를 해야 하는 경우, list comprehension 을 사용하는 것이 더 간단하고 pythonic 하다.
변경 전 코드
squares = []
for i in range(10):
squares.append(i*i)
print(squares)
변경 후 코드
squares = [i*i for i in range(10)]
print(squares)
3. sort 시 리스트 대신 튜플과 사전 정렬 알고리즘을 사용하자.
만약 소팅이 필요할 경우, 내장된 정렬 방법(오름차순)으로 복잡하게 구현하는 경우가 있는데, 이를 튜플 (또는 사전순 정렬 알고리즘)을 사용하면 훨씬 간단하다.
* 튜플은 리스트에 비해 더 적은 메모리를 필요로 하고, 속도가 빠르다.
변경 전 코드
data = [1,2,4,5,3]
sorted_data = sorted(data, reverse=False)
print(sorted_data)
변경 후 코드 (1) 튜플
data = (1,2,4,5,3)
sorted_data = sorted(data, reverse=False)
print(sorted_data)
4. set 을 활용해 unique value를 저장하자.
만약 데이터셋에 인입된 순서가 고려대상이 아니라면, set 을 활용해 unique value 를 저장하자.
이는 두 집합에 대한 교집합 or 차집합을 반환하거나, 홀수 or 짝수를 반환할 때 등에 활용할 수 있다.
변경 전 코드
my_list= [1,2,2,2,3]
my_set = set(my_list)
print(my_set)
변경 후 코드
set_data = {1,2,3}
print(set_data)
5. Generator 사용해서 메모리를 아끼자.
제네레이터를 사용하면 메모리를 아낄 수 있다.
제네레이터란, iterator 를 생성해주는 함수를 의미한다. 제네레이터에 대한 설명은 아래를 참조하자.
변경 전 코드 (size 확인)
import sys
my_list = [i for i in range(10000)]
print(sum(my_list))
print(sys.getziseof(my_list), "bytes")
변경 후 코드 (size 확인)
import sys
my_gen = (i for i in range(10000))
print(sum(my_gen))
print(sys.getziseof(my_gen), "bytes")
내가 공부한 유튜브 링크는 아래와 같으며, 이어서 '6-11번 & 고찰 내용'은 다음 포스팅에서 다뤄보도록 하겠다.
https://www.youtube.com/watch?v=8OKTAedgFYg
'데이터 공부 > Python' 카테고리의 다른 글
파이썬 클린 코드 (2) - 파이썬스러운 코드 (1/2) (0) | 2023.01.26 |
---|---|
파이썬 클린코드 (1) - 코드 포매팅과 도구 (0) | 2023.01.25 |
스트리밍 데이터 기반 AI 모델 처리에 대한 고민 (1) 람다 아키텍처 활용 (0) | 2022.09.04 |
Python Error - most likely due to a circular import 해결 (0) | 2022.04.13 |
Pandas - 고객 구매 데이터 데이터 전처리 연습 (0) | 2021.08.19 |