>백엔드 개발 >파이썬 튜토리얼 >Python 문자열 연결의 세 가지 방법과 효율성 및 적용 가능한 시나리오에 대한 자세한 설명

Python 문자열 연결의 세 가지 방법과 효율성 및 적용 가능한 시나리오에 대한 자세한 설명

高洛峰
高洛峰원래의
2016-10-17 16:53:241633검색

파이썬 문자열을 연결하는 방법은 일반적으로 세 가지가 있습니다.

방법 1: 더하기(+) 연산자를 통해 직접 연결

website = 'python' + 'tab' + '.com'

방법 2: 조인 방법

listStr = ['python', 'tab', '.com'] 
website = ''.join(listStr)

방법 3: 바꾸기

website = '%s%s%s' % ('python', 'tab', '.com')


세 가지 방법의 차이점에 대해 이야기해보겠습니다

1번 방법은 간단하고 사용하기 직접적이지만 인터넷에서 이 방법이 비효율적이라는 말이 많습니다

파이썬에서 +를 사용하여 문자열을 연결하는 것이 비효율적인 이유는 파이썬에서 문자열은 불변형이기 때문입니다. +를 사용하여 두 문자열을 연결하면 새 문자열이 다시 메모리에 적용되어야 합니다. 연속된 문자열이 많은 경우(a+b+c+d+e+f+...) 효율 저하가 불가피합니다


방법 2는 사용법이 살짝 복잡하지만, 하지만 여러 캐릭터를 연결할 때 효율적이며 하나의 메모리 애플리케이션만 필요합니다. 그리고 목록의 문자를 연결하는 경우 이 방법이 첫 번째 선택이어야 합니다


방법 3: 문자열 형식화, 이 방법은 매우 일반적으로 사용되므로 권장합니다. 이 방법을 사용하세요


다음 실험은 문자열 연결의 효율성을 설명하는 데 사용됩니다.

比较对象:加号连接 VS join连接
python版本: python2.7
系统环境:CentOS

실험 1:

# -*- coding: utf-8 -*-
from time import time
def method1():
    t = time()
    for i in xrange(100000):
        s = 'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'
    print time() - t
def method2():
    t = time()
    for i in xrange(100000):
        s = ''.join(['pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab'])
    print time() -t
method1()
method2()

결과:

0.641695976257
0.341440916061


실험 2:

# -*- coding: utf-8 -*-
from time import time
def method1():
    t = time()
    for i in xrange(100000):
        s = 'pythontab'+'pythontab'+'pythontab'+'pythontab'
    print time() - t
def method2():
    t = time()
    for i in xrange(100000):
        s = ''.join(['pythontab','pythontab','pythontab','pythontab'])
    print time() -t
method1()
method2()

결과:

0.0265691280365
0.0522091388702


위 두 실험의 결과는 완전히 다릅니다. 두 실험의 유일한 차이점은 문자열 연결 수입니다.

결론: 여러 개의 문자열이 연속적으로 연결될 때 더하기 기호 연결의 효율성이 낮습니다. 연결 수가 적으면 조인 연결보다 더하기 기호 연결의 효율성이 높습니다


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.