본문 바로가기

언어/Python

[ 파이썬 / Python ] 문자열 합치기 + join()

반응형

파이썬에서 문자열을 합치는 방법으로 + 연산자와 join() 메서드를 사용할 수 있습니다. 두 방법 모두 문자열을 결합하는 데 사용되지만, 성능과 사용 사례에서 차이가 있습니다. 아래에 두 방법을 비교하여 설명하겠습니다.

1. + 연산자를 사용하여 문자열 합치기

사용법

+ 연산자를 사용하면 두 개 이상의 문자열을 간단하게 결합할 수 있습니다.

str1 = "Hello"
str2 = "World"
result = str1 + " " + str2
print(result)  # 출력: Hello World

장점

  • 간단하고 직관적: 코드가 직관적이고 이해하기 쉽습니다.
  • 소규모 작업에 적합: 소수의 문자열을 결합할 때 사용하기 좋습니다.

단점

  • 성능 문제: 문자열 결합 시마다 새로운 문자열 객체가 생성됩니다. 많은 문자열을 반복적으로 결합할 때 성능 저하가 발생할 수 있습니다.
  • 가독성 문제: 많은 문자열을 결합할 때 코드의 가독성이 떨어질 수 있습니다.

2. join() 메서드를 사용하여 문자열 합치기

사용법

join() 메서드는 리스트와 같은 반복 가능한(iterable) 객체의 모든 요소를 하나의 문자열로 결합합니다. 구분자(separator)를 지정할 수 있습니다.

words = ["Hello", "World"]
result = " ".join(words)
print(result)  # 출력: Hello World

장점

  • 성능 우수: join() 메서드는 문자열 결합 시 최적화된 방식으로 메모리를 사용하므로, 많은 문자열을 결합할 때 성능이 뛰어납니다.
  • 가독성 향상: 리스트나 다른 반복 가능한 객체를 결합할 때 코드가 더 간결하고 명확해집니다.

단점

  • 덜 직관적: + 연산자에 비해 다소 덜 직관적일 수 있습니다.
  • 초기화 필요: 결합할 문자열들을 리스트나 튜플 등 반복 가능한 객체로 준비해야 합니다.

성능 비교

다수의 문자열을 반복적으로 결합할 때 성능 차이가 크게 나타납니다. 아래는 예시 코드입니다.

+ 연산자를 사용한 경우

import time

start_time = time.time()
result = ""
for i in range(10000):
    result += str(i)
end_time = time.time()

print("Using +: {:.5f} seconds".format(end_time - start_time))

join() 메서드를 사용한 경우

import time

start_time = time.time()
result = "".join([str(i) for i in range(10000)])
end_time = time.time()

print("Using join(): {:.5f} seconds".format(end_time - start_time))

위 코드를 실행하면 join() 메서드가 + 연산자보다 훨씬 빠르다는 것을 알 수 있습니다.

요약

  • + 연산자:
    • 간단하고 직관적
    • 소수의 문자열을 결합할 때 적합
    • 많은 문자열을 반복적으로 결합할 때 성능 저하
  • join() 메서드:
    • 성능이 뛰어남
    • 많은 문자열을 결합할 때 적합
    • 반복 가능한 객체의 모든 요소를 결합할 때 코드가 더 간결하고 명확

일반적으로 소수의 문자열을 결합할 때는 + 연산자를 사용하고, 많은 문자열을 결합하거나 반복 작업을 할 때는 join() 메서드를 사용하는 것이 좋습니다.

반응형