ホームページ > バックエンド開発 > Python チュートリアル > リストを操作するときに、Python の ` =` 演算子と `append()` メソッドが異なる結果を生成するのはなぜですか?

リストを操作するときに、Python の ` =` 演算子と `append()` メソッドが異なる結果を生成するのはなぜですか?

Patricia Arquette
リリース: 2024-10-29 08:30:04
オリジナル
909 人が閲覧しました

Why does Python's ` =` operator and the `append()` method produce different results when working with lists?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート