파이썬에서 문자열은 유니코드 문자를 포함하는 바이트 배열로 표현된다. 파이썬은 문자 데이터 유형을 지원하지 않으므로, 하나의 문자라도 길이 1의 문자열로 간주된다. 파이썬에서 문자열을 리스트로 표현하므로 인덱싱을 사용하여 개별 문자에 접근할 수 있다.
concatenate(+)를 하게 될 경우 파이썬은 새로운 문자열을 생성한다. (불변성)
즉, 문자열을 연결할때 새 문자열을 만들고 이전 문자열 문자를 하나하나 복사한 다음 새 문자열에 추가한다.
참고 자료 예시
def concat_strings():
"""
문자열의 공백을 제거하고 붙이는 프로그램
"""
# 붙일 문자열
*input_string = "Th is is an ex am pl ew it hs pa ce"
# 새 문자열
output_string = ""
for i in input_string:
if i == " ":
pass
else:
output_string += i
print(output_string)
concat_strings()
Output:
Thisisanexamplewithspace
위의 예시를 보면 공백이 + 연산자라고 생각하면 굉장히 비효율적이다.
결국 + 연산자를 사용하여 연결하면 +가 있을때마다 계속해서 새 문자열로 복사되어야한다.
그렇게 되면 시간 복잡도는 O(n2)이다.
효율적인 방법으론 list를 사용하여 append하고, 주기적으로 flush하는 기법으로 접근해야함 -> 종속성도 없고, 메모리 및 성능 문제도 부가적으로 해결할 수 있다.
방법
- + 연산자 사용하기
- join method 사용하기
- MutableString 모듈의 UserString 사용하기
- array 모듈과 character arrays 사용하기
- StringIO 모듈의 cStringIO 사용하기
- + 연산자 사용하기
- join() 메소드 사용하기
- % 오퍼레이터 사용하기
- format() 메소드 사용하기
+의 경우 비효율적
참조
https://plainenglish.io/blog/concatenating-strings-efficiently-in-python
How To Efficiently Concatenate Strings In Python
And how not to concatenate strings
plainenglish.io
https://www.simplilearn.com/tutorials/python-tutorial/string-concatenation-in-python
String Concatenation in Python | Simplilearn
This tutorial will uncover the popular methods that you can leverage to concatenate strings in python. Get hands-on with string concatenation. Start now!
www.simplilearn.com
'프로그래밍 언어 > Python' 카테고리의 다른 글
[python] deque 활용법 (0) | 2023.04.25 |
---|---|
[python] 리스트 역순으로 반복문 실행하기 (0) | 2023.04.10 |
[python] 파이썬 문자열 정렬 (0) | 2023.03.17 |
[python] 람다(lambda) 정렬(sort) (1) | 2023.01.14 |
[python] 파이썬 round 함수 사사오입 원칙 (1) | 2023.01.10 |