私はすでに文字列が不変であるためにforループで文字列連結を行うべきではないことを数回聞いたことがあるので、連結を新しい文字列インスタンスとして計算し、識別子。 Oで実行(N^2)forループの長い文字列でのPython文字列の連結
letters = ""
for c in document:
if c.isalpha():
letters += c
グッド:Oで実行(nは結果にn個の文字のであれば、時間の複雑さはO(N^2)
悪いだろう私が読んだと同時に)
document = ""
temp = []
for c in document:
if c.isalpha():
temp.append(c)
letters = "".join(temp)
そのトンの
「いくつかの後に実装Pythonインタープリタは、このようなコードを線形時間で完成させるための最適化を開発しました。 "
最初の解決法も問題ありませんか?それは最新のPythonビルドにある最適化ですか?
ほとんどのpythonistasは理解を使用します: 'letters = '' .join(c.isalpha()の場合はcでcを返します)' – wim
@StefanPochmannごめんなさい、文字はループの外側にある必要があります。コピー貼り付けエラー。両方のスニペットを修正しました。 – user1767754
@ user1767754最初の行にはまだ構文エラーがあります。そして奇妙なコメント。 –