스택큐힙리스트

Python에서 문자열을 연결하는 선호하는 방법은 무엇인가요? [중복] 본문

카테고리 없음

Python에서 문자열을 연결하는 선호하는 방법은 무엇인가요? [중복]

스택큐힙리스트 2023. 4. 1. 12:01
반응형

이 질문에는 이미 답변이 있습니다:

How to concatenate (join) items in a list to a single string

1. Hello - 안녕하세요

2. Goodbye - 안녕히 가세요

3. Thank you - 감사합니다

4. Please - 부탁합니다

5. Sorry - 미안합니다

6. Excuse me - 실례합니다

7. Yes - 네

8. No - 아니요

9. I love you - 사랑해요

10. How are you? - 어떻게 지내세요?

11. What's your name? - 이름이 뭐에요?

How do I append one string to another in Python?

1. 답답한 느낌이 들어.

2. 나는 너를 사랑해.

3. 어제 학교에 가지 않았어.

4. 오늘 날씨가 정말 좋아.

5. 내가 살고 있는 도시는 아름다워.

6. 네가 내 눈을 봤을 때 나는 웃었어.

7. 내일 우리 같이 영화를 보러 갈래?

8. 요즘 바쁘다 보니까 여행을 가고 싶어.

9. 새로운 취미 생활을 시작해 볼까 싶어.

10. 이것은 내가 쓴 시인데, 어떤가요?

11. 주말에는 여유롭게 쉬는 게 좋아.

12. 저녁 식사 메뉴는 뭐 먹을까?

2개월 전에 닫혔습니다.

파이썬의 string$&는 수정할 수 없으므로 문자열을 더 효율적으로 연결하는 방법은 무엇일까요?

나는 그렇게 쓸 수 있어:

s += stringfromelsewhere

이렇게 하거나:

s = []

s.append(somestring)

# later

s = ''.join(s)

이 질문을 쓰는 동안, 나는 그 주제에 대해 이야기하는 좋은 기사를 찾았다.

http://www.skymind.com/~ocrow/python_string/

하지만 이것은 파이썬 2.x 버전입니다. 그래서 Python 3에서 무언가 변했는지에 대한 질문이 될 것입니다.

답변 1

문자열 변수에 문자열을 추가하는 가장 좋은 방법은 + 또는 +=를 사용하는 것입니다. 이는 가독성이 좋고 빠르기 때문입니다. 이 두 가지 방법은 모두 빠릅니다. 선택은 취향에 따라 다릅니다. 후자가 가장 일반적입니다. 다음은 timeit 모듈을 사용한 타이밍입니다.

a = a + b:

0.11338996887207031

a += b:

0.11040496826171875

하지만, 리스트를 작성하고 추가한 다음 이러한 리스트를 결합하는 것을 권장하는 사람들은 문자열을 확장하는 것에 비해 문자열을 리스트에 추가하는 것이 매우 빠르다고 가정하기 때문입니다. 그리고 이것은 어떤 경우에는 맞을 수 있습니다. 예를 들어, 여기에는 하나의 문자열을 백만 번 추가하는 경우가 표시됩니다. 먼저 문자열에 추가하고 나중에 리스트에 추가합니다.

a += b:

0.10780501365661621

a.append(b):

0.1123361587524414

좋아요, 결과적으로 결과 문자열이 백만 글자 이상인 경우에도 추가하는 것이 여전히 더 빨랐습니다.

이제 천 문자 길이의 문자열을 백 만 번 추가하는 것으로 시도해 보겠습니다.

a += b:

0.41823482513427734

a.append(b):

0.010656118392944336

따라서 마지막 문자열은 약 100MB가 됩니다. 목록에 추가하는 것이 훨씬 빨랐습니다. 그 타이밍은 마지막 a.join()을 포함하지 않았습니다. 그래서 그것은 얼마나 오래 걸리게 될까요?

a.join(a):

0.43739795684814453

어머. 이 경우에도 append/join이 느리다는 것이 밝혀졌습니다.

그래서 이 추천은 어디에서 오는 거죠? 파이썬 2에서?

a += b:

0.165287017822

a.append(b):

0.0132720470428

a.join(a):

0.114929914474

그래서, 매우 긴 문자열을 사용하는 경우 append/연결이 조금 더 빠릅니다 (보통 그렇지 않겠죠, 메모리에 100MB의 문자열이 필요한 상황이 어디 있겠나요?)

하지만 진정한 문제는 파이썬 2.3입니다. 시간을 보여드릴 수도 없을 만큼 느리기 때문에 아직 끝나지 않았습니다. 이러한 테스트는 갑자기 몇 분이 소요됩니다. 하지만 append/join을 제외하면 이는 이후의 파이썬과 마찬가지로 빠릅니다.

예. 파이썬의 문자열 연결은 석기 시대에는 매우 느렸습니다. 하지만 2.4 버전부터는 (적어도 파이썬 2.4.7에서), append/join을 사용하는 것이 권장되지 않게 되어 더 이상 느린 속도는 나타나지 않습니다. 파이썬 2.3 업데이트 종료로 인해 2008년에 오래되었으므로 더 이상 사용하지 않는 것이 좋습니다. :-)

(업데이트: 더 신중하게 테스트를 진행해 본 결과, Python 2.3에서도 두 개의 문자열에 대해 +와 +=를 사용하는 것이 더 빠르다는 것이 밝혀졌습니다. ''.join()을 사용하도록 권장한 것은 오해일 가능성이 있습니다)

그러나 이것은 CPython 입니다. 다른 구현은 다른 우려 사항이 있을 수 있습니다. 그리고 이것은 조기 최적화가 모든 악의 근원이라는 또 다른 이유입니다. 먼저 측정하지 않고는 빠른 기술을 사용하지 마십시오.

따라서 문자열 연결에 가장 좋은 버전은 + 또는 +=를 사용하는 것입니다. 그리고 그것이 당신에게 느리게 나오면, 그것은 매우 불가능하므로 다른 것을 해보십시오.

내 코드에서 append / join을 많이 사용하는 이유는 무엇인가요? 때로는 실제로 더 명확하기 때문입니다. 특히 연결해야하는 것이 공백이나 쉼표 또는 새 줄로 구분되어야하는 경우에 더 그렇습니다.

답변 2

Python에서 문자열 연결 방법 중 선호하는 방법은 무엇인가?

Python은 다양한 문자열 연결 방법을 제공하며 프로그래머는 그중 선택할 수 있습니다. 그러나 프로그래머들은 문자열 연결에 대해서 어떤 방법을 사용해야 할까요? 이 질문에 대한 답은 효율적인 방법입니다. Python에서 문자열 연결 방법 중 가장 효율적인 방법은 문자열을 결합할 때 + 연산자를 사용하는 것입니다.

+ 연산자를 사용하는 것은 문자열 연결 시간을 줄이고 코드의 가독성을 높일 수 있습니다. 이를테면:

str1 = Hello

str2 = World

str3 = str1 + str2

print(str3)

=> HelloWorld

위의 코드에서 두 개의 문자열을 결합하려고 + 연산자를 사용합니다. 이것은 두 문자열을 결합하는 다른 방법보다 빠르고 가독성이 좋니다.

그러나 join() 메소드는 작은 문자열을 결합할 때는 + 연산자보다 빠를 수 있습니다. 이 메소드는 문자열 객체의 목록을 결합하는 데 사용됩니다. 이 메소드를 사용하는 방법은 다음과 같습니다.

list_of_strings = [Hello, World]

separator =

str3 = separator.join(list_of_strings)

print(str3)

=> Hello World

list_of_strings에는 결합 할 문자열을 저장하고 separator에는 연결 문자를 저장합니다. join() 메소드는 문자열들을 separator로 결합합니다. 이 방법은 문자열이 매우 작을 때 가독성이 좋습니다.

따라서 Python에서 문자열을 결합하는 가장 효율적인 방법은 + 연산자를 사용하는 것입니다. join() 메소드는 작은 문자열을 결합할 때 사용하면 좋습니다. 일반적으로 가독성을 높이기 위해 + 연산자를 사용하는 것이 좋습니다.

반응형
Comments