코딩테스트/Python

[python] 효율적인 코드 작성 방법

튼튼한장 2024. 11. 28. 17:33

1. enumerate() 사용하기

- enumerate를 사용하면 반복문에서 인덱스와 값을 쉽게 사용할 수 있다.

a = [i for i in range(4)]
# 변수를 enumerate()로 감싸 사용한다.
for idx, num in enumerate(a):
	if num > 2:
    	a[idx] = 0
# 배열 a에 있는 값이 2보다 작으면 0으로 변경하는 코드

 

 

2. for문 대신에 list comprehension 사용하기

# [expression for item in iterable if condition] 형식으로 작성한다.
data = [i for i in range(10) if i % 2 = 0]
# 짝수만 data 배열에 저장된다.

 

3. Generator comprehension 사용하기

generator 객체를 생성하며 lazy 방식을 사용하여 메모리를 효율적으로 사용할 수 있다.

⚠️ 그러나 한 번 생성하고 호출하면 끝이다. 즉 다시 사용할 수 없다(일회용)..

# (expression for item in iterable if condition) 형식으로 작성한다.
num = (i for i in range(10) if i % 2 == 0)
# 단순히 () 괄호만 변경해주면 된다.

for idx, num in enumerate(num):
	print(idx, num)
    
# 위의 for문을 실행하고, 동일한 for문을 실행하면 아무런 값도 출력되지 않는다. (일회용)

 

4. f-string 사용하기

# f'{변수명} ~ ... {변수명}' 형태로 사용한다.
a = '안녕'
b = '두'
print(f'{a}은 {b} 글자이다.')
# 안녕은 두 글자이다. 라는 문장이 출력된다.

 

5. if i in list 형식 사용하기

foods = ['회', '망고', '귤', '과자']
ans = '귤'

if ans in foods:
	print(ans)
# 조건이 충족되면 결과가 출력된다.

 

6. join()으로 문자열 합치기

encryption = ['파이썬', ' 기초부터 ', '공부하기']

ans = "".join(encryption)
print(ans)
# 파이썬 기초부터 공부하기 문장이 출력된다.
# join을 사용하면 for문을 사용하지 않아 코드가 간결해진다.

 

7. collections.Counter로 문자 수 세기

from collections import Counter

test = [1, 1, 1, 2, 2, 3]
counter = Counter(test)

print(counter) 
print(counter[1]) # 1의 개수인 3이 출력된다.
from collections import Counter

test = [1, 1, 1, 2, 2, 3]
counter = Counter(test)

most_common = counter.most_common(2) # 가장 많은 1과 2가 저장된다.
print(most_common)
print(most_common[0]) # 1과 1의 개수가 출력된다.
print(most_common[0][1]) # 1의 개수가 출력된다.