데이터 과학 노트

Python3 Tips 본문

Development/Python

Python3 Tips

Data Scientist Note 2022. 1. 2. 15:50

Python 3 Tips

  • Python 3 사용에 있어서 참고하면 좋을 tip을 여러 곳에서 취합하여 정리하였습니다.

 

1. venv 사용하기

  • 프로젝트에서 참조하면 모듈의 버전 등의 차이로 프로젝트마다 각각 다른 virtual environment 를 활용해야 할 경우
# venv setup
python3 --version
python3 -m venv env

# active & install modules
source ./env/bin/active
pip install --upgrade pip

# ...
deactive

2. 내장 함수 enumerate() 사용하기 (range(len()) 지양)

data = [1, 2, -3, -4, 5]

for index, num in enumerate(data):
    pass

3. 내장 함수 sorted()lambda 사용하기

data = [
    {"name": "Max", "age": 6}, 
    {"name": "Lisa", "age": 20}, 
    {"name": "Ben", "age": 9}
]
sorted_data = sorted(data, key=lambda x: x["age"])

4. Syntactic Sugar 사용하기

  • 4.1 list, set, dict, ... comprehension 사용하기 (list comprehension: ≈ 리스트 표현식)
squares = [i*i for i in range(10)]
  • 4.2 비교 연산자 합치기
if(a < b <= c):  # if((a < b) and (b <= c)):
	pass
  • 4.3 삼항 연산자 (true_expression if condition else false_expression)
for index, data in data_list:
	# operation: data -> result
	print(result) if index == 0 else None
  • 4.3 삼항 연산자 (데이터)
for index, data in data_list:
	# operation: data -> result
	print(result) if index == 0 else None

5. collections.Counter 사용하기

프로젝트에서 참조하면 모듈의 버전 등의 차이로 프로젝트마다 각각 다른 virtual envirorment 를 활용해야 할 경우

from collections import Counter

my_list = [10, 10, 10, 5, 5, 2, 9, 9, 9, 9, 9, 9]
counter = Counter(my_list)

print(counter)      # Counter({9: 6, 10: 3, 5: 2, 2: 1})
print(counter[10])  # 3

6. f-String 사용하기 (.format() 지양)

print(f"Epoch: [{index}/{epoch_num}]")

7. dictionaries 합치기

config = {'model': 'gcn', 'layer_num': 3}      # model config
args = {'epoch_num': 10, 'dropout_rate': 0.2}  # job arguments
params = {**config, **args}

8. zip 사용하기

  • 두개 이상의 list 한번에 순회하기
names = ['Peter', 'James', 'Robert', 'John']
ages = [13, 12, 14, 14]
grades = ['B', 'C', 'A', 'B']

for name, age, grade in zip(names, ages, grades)
	print(f"name: {name}, age: {age}", grade: {grade}")

9. Underscore Placeholders

num = 10_000_000
print(f'{num:,}')

10. TBU

 

참조