ホームページ  >  記事  >  バックエンド開発  >  Python の文字列連結の 3 つの方法とその効率性、および適用可能なシナリオの詳細な説明

Python の文字列連結の 3 つの方法とその効率性、および適用可能なシナリオの詳細な説明

高洛峰
高洛峰オリジナル
2016-10-17 16:53:241585ブラウズ

Python の文字列連結メソッドには、一般的に次の 3 つのメソッドがあります:

メソッド 1: プラス (+) 演算子を介して直接接続する

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

メソッド 2: join メソッド

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

メソッド 3 : Replace

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


3 つの方法の違いについて話しましょう

方法 1 はシンプルで直接使用できますが、インターネット上ではこの方法が非効率であると多くの人が言っています

python + 文字列連結の非効率性は、Python の文字列が不変型であるためです。 + を使用して 2 つの文字列を接続すると、新しい文字列が生成されるため、連続する場合は再度メモリを適用する必要があります。追加する文字列が多く (a+b+c+d+e+f+...)、効率が低いのは避けられません


方法 2 は使用が少し複雑ですが、複数の文字を連結する場合は効率が高く、 1 つのメモリ アプリケーションになります。そして、リストの文字を接続する場合は、この方法を最初の選択肢にする必要があります


方法 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


上記の2つ実験ではまったく異なる結果が得られました。2 つの実験の唯一の違いは、文字列接続の数でした。

結論: 複数の文字列接続を連続して実行すると、プラス記号接続の効率が低くなります。接続数が少ない場合、プラス記号接続の効率は結合接続よりも高くなります


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。