ホームページ >バックエンド開発 >Python チュートリアル >Python ループで「i」を変更してもリストの要素が変更されないのはなぜですか?

Python ループで「i」を変更してもリストの要素が変更されないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-06 18:15:17304ブラウズ

Why Doesn't Modifying `i` in a Python Loop Change the List's Elements?

Python ループでのリストの変更について

ループを使用してリストを反復処理しているときにリスト内の要素を変更しようとすると、変更が持続しないように見える問題。この動作は、ループ内で割り当てられた変数を Python が処理する方法に起因します。

主要な問題

Python では、ループ内の要素を参照する変数をループ内で割り当てると、 list (例: for i in li:) の場合、リスト自体を変更するのではなく、その要素への新しい参照を作成します。したがって、i を変更しようとしても、実際にはリスト内の値を変更するわけではありません。

次のコードを考えてみましょう:

li = ["spam", "eggs"]
for i in li:
    i = "foo"

print(li)  # Output: ["spam", "eggs"]

ループ内で i に "foo" を代入しましたが、i は li 内の要素を直接参照せず、むしろ参照しているため、li の値は変化しません。

解決策

ループ中にリスト要素を変更するには、いくつかのオプションがあります:

  1. リスト内包表記: [foo for i in を使用した例で示したように、変更された要素を含む新しいリストを作成します。 li].
  2. インデックス付きループ: リストのインデックスを反復するループ (for idx in range(len(li)) など) を使用し、変更された値を li[ idx].
  3. Enumerate: enumerate を使用してインデックスとインデックスを同時に反復処理します。要素 (例: enumerate(li) の idx、item) を使用して、リスト要素を直接変更できます。

以上がPython ループで「i」を変更してもリストの要素が変更されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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