ホームページ バックエンド開発 Python チュートリアル リスト上の Python Append() と = : 異なる結果が得られるのはなぜですか?

リスト上の Python Append() と = : 異なる結果が得られるのはなぜですか?

Oct 27, 2024 pm 08:55 PM

 Python Append() vs.  = on Lists: Why Do They Give Different Results?

Python Append() とリストの = 演算子: 結果の矛盾を理解する

Python では、append() メソッドと =演算子を使用してリストを変更できます。ただし、これらの操作は、特に入れ子になったリストを処理する場合に、予期しない結果を引き起こすことがあります。この記事の目的は、2 つのアプローチの動作が異なる理由を説明することです。

= 演算子

= 演算子は、右側のリストの要素をリストに追加します。左側のリスト。元のリストが変更され、更新されたリストが返されます。例:

<code class="python">c = [1, 2, 3]
c += c  # This is equivalent to c.extend(c)
print(c)  # Output: [1, 2, 3, 1, 2, 3]</code>
ログイン後にコピー

この場合、= 演算子は c の要素を c と連結し、元のサイズの 2 倍のリストが生成されます。

append()メソッド

append() メソッドは、指定されたオブジェクトをリストの最後に挿入します。 = 演算子とは異なり、append() メソッドはオブジェクトの要素を連結せず、元のリストへの参照として追加します。例:

<code class="python">c = [1, 2, 3]
c.append(c)  # This is equivalent to c.insert(len(c), c)
print(c)  # Output: [1, 2, 3, [...]]</code>
ログイン後にコピー

この場合、append() メソッドはリスト c の末尾に参照を追加します。これにより、c[-1] と c が同じオブジェクトを参照する循環参照が発生します。 c を出力すると、出力 [1, 2, 3, [...]] が得られます。ここで、[...] は無限再帰を表します。

なぜ違いますか?

= 演算子と append() メソッドの主な違いは、前者は指定されたオブジェクトの要素に作用するのに対し、後者はオブジェクト全体を扱うことです。 = を使用してリストを追加すると、Python は要素を連結し、各要素を新しいリストに効果的にコピーします。対照的に、append() を使用してリストを追加する場合、Python は元のリストに参照を追加するだけです。リストにそれ自体への参照が含まれている場合、無限再帰が発生する可能性があります。

代替

2 つのリストを連結することが目的の場合は、= 演算子の代わりに extend() メソッドを使用できます。 extend() メソッドは = と同様に機能しますが、元のリストは変更されません。例:

<code class="python">c = [1, 2, 3]
c.extend(c)
print(c)  # Output: [1, 2, 3, 1, 2, 3]</code>
ログイン後にコピー

以上がリスト上の Python Append() と = : 異なる結果が得られるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Pythonを使用してテキストファイルのZIPF配布を見つける方法 Pythonを使用してテキストファイルのZIPF配布を見つける方法 Mar 05, 2025 am 09:58 AM

Pythonを使用してテキストファイルのZIPF配布を見つける方法

Pythonでファイルをダウンロードする方法 Pythonでファイルをダウンロードする方法 Mar 01, 2025 am 10:03 AM

Pythonでファイルをダウンロードする方法

Pythonでの画像フィルタリング Pythonでの画像フィルタリング Mar 03, 2025 am 09:44 AM

Pythonでの画像フィルタリング

HTMLを解析するために美しいスープを使用するにはどうすればよいですか? HTMLを解析するために美しいスープを使用するにはどうすればよいですか? Mar 10, 2025 pm 06:54 PM

HTMLを解析するために美しいスープを使用するにはどうすればよいですか?

Pythonを使用してPDFドキュメントの操作方法 Pythonを使用してPDFドキュメントの操作方法 Mar 02, 2025 am 09:54 AM

Pythonを使用してPDFドキュメントの操作方法

DjangoアプリケーションでRedisを使用してキャッシュする方法 DjangoアプリケーションでRedisを使用してキャッシュする方法 Mar 02, 2025 am 10:10 AM

DjangoアプリケーションでRedisを使用してキャッシュする方法

Natural Language Toolkit(NLTK)の紹介 Natural Language Toolkit(NLTK)の紹介 Mar 01, 2025 am 10:05 AM

Natural Language Toolkit(NLTK)の紹介

TensorflowまたはPytorchで深い学習を実行する方法は? TensorflowまたはPytorchで深い学習を実行する方法は? Mar 10, 2025 pm 06:52 PM

TensorflowまたはPytorchで深い学習を実行する方法は?

See all articles