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 つの実験の唯一の違いは、文字列接続の数でした。
結論: 複数の文字列接続を連続して実行すると、プラス記号接続の効率が低くなります。接続数が少ない場合、プラス記号接続の効率は結合接続よりも高くなります