Python の append() とリストの = 演算子: 対照的な結果が生じる理由
append() メソッド間の明らかな相違= 演算子をリストで使用すると、混乱する可能性があります。この違いを明確にするために、これらの操作の基礎となるメカニズムを詳しく調べてみましょう。
= 演算子
= 演算子をリストに適用すると、効果的に元のリストの右側のリスト。ただし、この操作では新しいリスト オブジェクトは作成されません。代わりに、既存のリストをその場で変更します。
append() メソッド
対照的に、append() メソッドは、引数として指定されたオブジェクトを明示的に挿入します。元のリストの終わり。この挿入により、同じリスト インスタンスへの参照が元のリストの最後の要素に格納されます。その結果、リストに対して append() を再帰的に呼び出すと、無限ループが発生します。
わかりやすい図
次のコード スニペットを考えてみましょう:
<code class="python">c = [1, 2, 3] c += c print(c) # Output: [1, 2, 3, 1, 2, 3]</code>
この例では、= 演算子は c の要素 (つまり、[1, 2, 3]) を c に追加し、その長さを事実上 2 倍にします。
次に、コードを少し変更してみましょう。
<code class="python">c = [1, 2, 3] c.append(c) print(c) # Output: [1, 2, 3, [...]]</code>
ここで、append() メソッドはリスト全体 c を最後の要素として挿入します。この再帰では、c[-1] が c 自体と同一になるため、無限ループが発生します。
代替アプローチ
リストを連結することが目的の場合は、次のようにすることができます。 = 演算子の代わりに extend() メソッドを使用します。 extend() メソッドは、 と同様に、別のリスト (または反復可能) の要素を元のリストに追加し、それによって元のリストをその場で変更します。
結論
append() と = 演算子の主な違いは、それぞれの動作にあります。 = 演算子は右側のリストの要素を元のリストに連結しますが、append() はリスト自体を最後の要素として挿入し、再帰ループが発生します。
以上がリストを操作するときに、Python の ` =` 演算子と `append()` メソッドが異なる結果を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。