[解決済み] 2つの文字列を連結するのに '+' を使用しない理由は何ですか?
質問
Pythonでよくあるアンチパターンは、一連の文字列を連結する際に
+
を使って文字列を連結することです。これは、Pythonインタプリタが各反復のために新しい文字列オブジェクトを作成しなければならず、結局二次関数的な時間がかかるため、よくありません。(CPythonの最近のバージョンは明らかにこれを最適化できる場合がありますが、他の実装ではできないので、プログラマはこれに依存しないようにしましょう)。
''.join
はこれを行う正しい方法です。
とはいうものの、(
Stack Overflow のここも含めて
) では
決して、決して
使用する
+
を使用し、文字列の連結には常に
''.join
またはフォーマット文字列を使用します。2つの文字列を連結するだけなら、なぜそうなるのか理解できません。私の理解が正しければ、2次関数的な時間はかからないはずですし、私は
a + b
の方がすっきりしていて読みやすいと思います。
''.join((a, b))
または
'%s%s' % (a, b)
.
を使用するのは良い習慣ですか?
+
を使用して2つの文字列を連結することは良いことでしょうか?それとも、私が知らない問題があるのでしょうか?
どのように解決するのですか?
を連結することは問題ありません。
2
という文字列を
+
. 確かに
''.join([a, b])
.
しかし、2つ以上の文字列を連結して
+
の場合はO(n)であるのに対し、O(n^2)であることは確かです。
join
に対して)O(n^2)演算となり、非効率になります。しかし、これはループを使うこととは関係ない。さらに
a + b + c + ...
はO(n^2)であり、その理由は各連接が新しい文字列を生成するためです。
CPython2.4以降ではそれを軽減しようとしていますが、やはり
join
を使うことをお勧めします。
関連
-
Python Decorator 練習問題
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み] 文字列を連結する方法を教えてください。
-
[解決済み] twigで文字列を連結する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] goで文字列の連結を効率的に行う方法
-
[解決済み] PowerShellで文字列と変数を連結する方法は?
-
[解決済み] SQL ServerでGROUP BYを使って文字列を連結する方法とは?
-
[解決済み] LINQを使用して文字列を連結する
最新
-
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関数の高度な応用を解説
-
Python カメの描画コマンドとその例
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
Python jiabaライブラリの使用方法について説明
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み] Pythonで文字列を連結する方法として好ましいのはどれですか?
-
[解決済み】.join()メソッドは、具体的に何をするのですか?
-
[解決済み] Pythonで最も効率的な文字列の連結方法は何ですか?