본문 바로가기
프로그래밍 언어/Python

[Python] 효율적인 문자열 붙이기 방법(String Concatenate)

by nahkim 2023. 2. 21.

파이썬에서 문자열은 유니코드 문자를 포함하는 바이트 배열로 표현된다. 파이썬은 문자 데이터 유형을 지원하지 않으므로, 하나의 문자라도 길이 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 사용하기

 

  1. + 연산자 사용하기
  2. join() 메소드 사용하기
  3. % 오퍼레이터 사용하기
  4. 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