본문 바로가기
Data Engineering/파이썬

파이썬 String 합치기, String concatenation, join 함수 (파이썬 클린 코드 #3)

by 무언가 하는 소소 2022. 10. 12.
728x90
반응형

 

 

전편

2022.10.11 - [Data Engineering/파이썬] - 파이썬 클린 코드 #2: 딕셔너리 사용법 (get(), setdefault(), defaultdict())

 

 

파이썬 String을 효율적으로 합치는 방법

 

파이썬에서 여러개의 String을 합칠 때는 보통 '+' 오퍼레이터를 사용한다. 이 방법은 String의 개수가 적을 때는 괜찮지만 아주 많은 수의(>1000) String을 합칠 때는 비효율적인 방법이다.

 

 

1. String을 합칠 때 '+'를 사용하는 게 비효율적인 이유

String은 immutable 객체이다. 따라서 우리가 '+' 오퍼레이터를 사용하면 기존의 String 값이 바뀌는 게 아니라 새로운 String 객체가 생성된다. 따라서 다음과 같은 코드는 루프를 돌면서 총 10000개의 새로운 String을 생성한다. 

resultStinrg = ''
for i in range(10000):
	resultString += 'result '

 

 

2. String을 효율적으로 합치는 법

많은 수의 String을 효율적으로 합치는 방법은 리스트와 join()을 활용하는 것이다.

 

join() 함수를 사용하기 위해서는 특정 문자열에 대해 join() 함수를 호출하면서 문자열 리스트를 아규먼트로 넘겨주면 된다(str.join(l)). 그러면 해당 문자열을 세퍼레이터로 하여 리스트에 있는 문자열을 모두 합친 결과물을 반환한다. 

# String.join(list)
l = ['I', 'love', 'banana']
# 세퍼레이터로 white space 사용
str = ' '.join(l)
>> I love banana
# 세퍼레이터로 ! 사용
str = '!'.join(l)
>> I!love!banana!

 

따라서 join() 함수를 사용하면 위에 '+' 오퍼레이터를 사용한 코드를 아래와 같이 구현할 수 있다. 

resultStinrg = []
for i in range(10000):
	resultString.append('result')

resultString = ' '.join(resultString)

 

 

다음편

728x90
반응형

댓글