1. enumerate 를 사용한다.
# iterate with enumerate
# instead of range(len(x))
#나쁜 예
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)
enumerate()는 iterable 객체에 사용하면 인덱스와 아이템을 튜플 형태로 반환합니다.
2. List comprehension 사용
# Use list comprehension
#나쁜 예
squares = []
for i in range(10):
squares.append(i * i)
print(squares)
#좋은 예
squares = [i * i for i in range(10)]
print(squares)
리스트를 만들 때, 되도록이면 for loop보다는 List comprehesion을 사용하도록 합시다.
3. Sorted로 복잡한 자료구조 정렬하기
# Sort complex iterable with sorted()
data = [3, 4, 1, 10, 9]
sorted_data = sorted(data, reverse=True)
print(sorted_data)
data = [{'name' : 'max', 'age':6}, {'name':'Lisa', 'age':20}, {'name':'Ben', 'age': 9}]
sorted_data = sorted(data, key=lambda x: x['age'])
print(sorted_data)
Sorted()를 사용하고 key, reverse같은 인자값을 조절하면 복잡한 자료구조도 정렬할 수 있습니다.
4. set 사용
# Store unique values with Sets
my_list = [1, 2, 3, 4, 5, 6, 7, 7, 7]
my_set = set(my_list)
print(my_set)
primes = {2, 3, 4, 5, 11, 13, 17, 19}
print(primes)
set은 중복된 아이템들을 제거해주기 때문에 Unique values를 찾고자 할 때 사용하면 좋습니다.
5. 메모리를 아끼는 generator
# Save memories with generation
import sys
#나쁜 예
my_list = [i for i in range(10000)]
print(sum(my_list))
print(sys.getsizeof(my_list), 'bytes')
# 87632 bytes
#좋은 예
my_gen = (i for i in range(10000))
print(sum(my_gen))
print(sys.getsizeof(my_gen), 'bytes')
# 128 bytes
큰 규모의 iterable 객체가 필요할 때, 리스트 대신 Generator를 사용하면 메모리를 절약할 수 있다.
6. .setdefault()를 사용해 딕셔너리의 기본값을 적용한다.
#Define default values in Dictionaries with .get() and .setdefault()
my_dict = {'item':'football', 'price':10.00}
"""
< Key Error >
count = my_dict['count']
print(count)
"""
count = my_dict.setdefault('count', 0)
print(count)
print(my_dict)
딕셔너리에 없는 키를 불러오려고 하면 key error가 발생한다. 그러나 setdefault를 사용하면 정해준 default값으로 출력해준다.
7. Counter 사용
#collections.Counter
from collections import Counter
my_list = [10, 10, 10, 5, 5, 2, 9, 9, 9, 9, 9, 9]
counter = Counter(my_list)
print(counter)
most_common = counter.most_common(1)
print(most_common[0])
collections 패키지의 Counter를 사용하면 아이템의 갯수를 쉽게 셀 수 있다.
8.f-string을 이용한 포맷
# Format String with f-stiring
name = 'Alex'
my_string = f'hello {name}'
print(my_string)
"".format()을 사용하는 것 보다 f-string이 더 빠른 포맷을 해준다.
9. 문자열을 결합할 때 .join() 사용
#Concatenate Strings with .join()
list_of_strings = ['hello', 'my', 'friend']
#Bad code
my_string = ''
for i in list_of_strings:
my_string += i + ' '
print(my_string)
#Good code
my_string = ' '.join(list_of_strings)
print(my_string)
문자열을 결합하고자 할 때, for loop 대신 join을 쓰는 것이 더 합리적이다.
10. { **d1, **d2}를 사용한 딕셔너리 결합
# Merge dictionaries
d1 = {'name':'alex', 'age':25}
d2 = {'name':'alex', 'city':'New York'}
merge_dict = {**d1, **d2}
print(merge_dict)
딕셔너리를 결합하고 싶을 때, **를 사용하면 편리하게 결합할 수 있다.
'Python > Study' 카테고리의 다른 글
Basic Python) Numpy (0) | 2021.11.02 |
---|---|
Basic Python) Data handling (0) | 2021.11.02 |
Basic Python) File / Exception / Log Handling (0) | 2021.11.02 |
Basic Python) module & project (0) | 2021.11.02 |
Basic Python) object oriented programming (0) | 2021.11.02 |