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)

딕셔너리를 결합하고 싶을 때, **를 사용하면 편리하게 결합할 수 있다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기