[解決済み] Pythonで最も効率的な文字列の連結方法は何ですか?
質問
Pythonで効率的に大量の文字列を連結する方法(例えば ストリングビルダー C#の 文字列バッファ をJavaで作成した場合)?私は次のメソッドを見つけました。 こちら :
-
を使った簡単な連結
+
-
文字列リストと
join
メソッド -
使用方法
UserString
からMutableString
モジュール -
文字配列と
array
モジュール -
使用方法
cStringIO
からStringIO
モジュール
しかし、専門家の皆さんは何を使い、何を提案しているのか、そしてその理由は?
[ 関連する質問はこちら ]
解決方法を教えてください。
Python 3.6 では、既知のコンポーネントを文字列連結する際に 文字列の補間 .
のテストケースがあるとします。 mkoistinenさんの回答 文字列
domain = 'some_really_long_example.com'
lang = 'en'
path = 'some/really/long/path/'
競合他社は
-
f'http://{domain}/{lang}/{path}'
- 0.151 µs -
'http://%s/%s/%s' % (domain, lang, path)
- 0.321 µs -
'http://' + domain + '/' + lang + '/' + path
- 0.356 µs -
''.join(('http://', domain, '/', lang, '/', path))
- 0.249 μs(一定長のタプルの構築は、一定長のリストの構築よりわずかに速いことに注意してください)。
このように、現在、最も短く、最も美しいコードは、最も速いということでもあります。
Python 3.6 のアルファバージョンでは
f''
文字列は
最も遅い
とほぼ同等のバイトコードが生成されます。
''.join()
の呼び出しが不要な場合
str.__format__
を返すだけで、引数なしだと
self
は変更されません。これらの非効率性は3.6 finalの前に対処されました。
この速度は、Python 2の最速メソッドである次のものと対比できます。
+
私のコンピュータでは、連結は
0.203
µs、8ビット文字列では
0.259
µs となります。
関連
-
Pythonによるjieba分割ライブラリ
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み] 文字列リテラルの前にある'b'文字は何を意味するのでしょうか?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] Pythonで文字列を小文字にするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python call matlab メソッドの詳細
-
Python LeNetネットワークの説明とpytorchでの実装
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み] str' オブジェクトはアイテムの割り当てをサポートしていません。
-
[解決済み】python-3.xで辞書を使用して文字列をフォーマットするにはどうすればよいですか?
-
[解決済み] 2つの文字列を連結するのに '+' を使用しない理由は何ですか?