3

重複の可能性:
LIST.append(1) と LIST = LIST + [1] の違いは何ですか (Python)

私はPythonが初めてで、プログラミングも初めてです。私は ThinkPython という本に従っていますが、ここで私が理解できないことが 1 つあります。

演習 10.7 ファイル words.txt を読み取り、単語ごとに 1 つの要素を持つリストを作成する関数を書きなさい。この関数の 2 つのバージョンを記述します。1 つは append メソッドを使用し、もう 1 つはイディオム t = t + [x] を使用します。実行に時間がかかるのはどれですか? なんで?

2 つの方法を試してみたところ、後者 (t=t+[x]) の方が追加方法よりもはるかに時間がかかることがわかりました。これが私の最初の質問です、なぜこれが起こるのでしょうか?

t=t+[x] という行を t+=[x] に変更したのは、理由もなく、この改訂版が追加メソッドとほぼ同じ時間がかかることがわかったためです。t=t+[x] は t+=[x] と等しいと思っていましたが、どうやらそうではないようです。なんで?

ところで: python += をキーワードとして Google を検索してみましたが、引用符を付けても Google は += をキーワードとして認識しないようです。

4

2 に答える 2

5
t = t + [x]

を取り、(のメソッドを呼び出す)tと連結します。これにより、新しいリストが作成され、その名前が。になります。[x]t__add__t

t += [x]

リスト自体で直接機能するt'sメソッドを呼び出します。__iadd__追加のリストは作成されません。

于 2012-12-07T12:48:56.163 に答える
0

まず、addメソッドは新しいオブジェクトを作成するのに対し、append()は既存のオブジェクトを変更するだけであるため、パフォーマンスが向上することを知っておく必要があります。

2 番目の質問については、上記のことを知っていれば、'+=' または 'plus equals' 演算子が Python で何に相当するかがわかるため、'+' 演算子とは異なる動作をする可能性があります。

また、あなたの例で呼び出されている add メソッドと iadd メソッドの違いを説明しているこのリンクと、おそらくこれチェック知識を確立することをお勧めします。

于 2012-12-07T13:15:25.960 に答える