Python 문자열 개체는 변경할 수 없습니다. 따라서 + 연산자를 사용하여 두 문자열을 연결할 때마다 새 문자열이 생성됩니다. 많은 문자열을 추가해야 하는 경우 + 연산자를 사용하면 최종 결과를 얻기 전에 불필요하게 많은 임시 문자열이 생성됩니다.
Python 문자열 추가
문자열을 ‘n’ 번 연결하는 함수를 살펴보겠습니다.
def str_append(s, n):
output = ''
i = 0
while i < n:
output += s
i = i + 1
return output
+ 연산자의 사용법을 보여주기 위해 이 함수를 정의하고 있습니다. 나중에 timeit 모듈을 사용하여 성능을 테스트할 것입니다. 단순히 문자열을 ‘n’ 번 연결하려는 경우 를 사용하여 쉽게 수행할 수 있습니다 s = 'Hi' * 10
.
문자열 추가 작업을 수행하는 또 다른 방법은 목록을 만들고 목록에 문자열을 추가하는 것입니다. 그런 다음 string join() 함수를 사용하여 병합하여 결과 문자열을 얻습니다.
def str_append_list_join(s, n):
l1 = []
i = 0
while i < n:
l1.append(s)
i += 1
return ''.join(l1)
이러한 메서드가 예상대로 작동하는지 테스트해 보겠습니다.
if __name__ == "__main__":
print('Append using + operator:', str_append('Hi', 10))
print('Append using list and join():', str_append_list_join('Hi', 10))
# use below for this case, above methods are created so that we can
# check performance using timeit module
print('Append using * operator:', 'Hi' * 10)
산출:
Append using + operator: HiHiHiHiHiHiHiHiHiHi
Append using list and join(): HiHiHiHiHiHiHiHiHiHi
Append using * operator: HiHiHiHiHiHiHiHiHiHi
Python에서 문자열을 추가하는 가장 좋은 방법
파일 에 두 가지 방법이 모두 정의되어 있습니다 string_append.py
. timeit 모듈을 사용하여 성능을 확인합시다.
$ python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append("Hello", 1000)'
1000 loops, best of 5: 174 usec per loop
$ python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append_list_join("Hello", 1000)'
1000 loops, best of 5: 140 usec per loop
$ python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append("Hi", 1000)'
1000 loops, best of 5: 165 usec per loop
$ python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append_list_join("Hi", 1000)'
1000 loops, best of 5: 139 usec per loop

요약
문자열이 거의 없는 경우 모든 방법을 사용하여 문자열을 추가할 수 있습니다. 가독성 관점에서 + 연산자를 사용하는 것이 소수의 문자열에 더 좋아 보입니다. 그러나 많은 문자열을 추가해야 하는 경우 list 및 join() 함수를 사용해야 합니다.
GitHub 리포지토리 에서 전체 Python 스크립트와 더 많은 Python 예제를 확인할 수 있습니다 .