Python のループ内でリスト要素を変更する
Python では、ループを使用してリスト要素を反復処理しているときにリスト要素を変更しようとすると、予期しない結果が生じることがよくあります。この動作の基礎となる仕組みを理解することは、リストを効果的に操作するために不可欠です。
たとえば、次のコードを考えてみましょう。
li = ["spam", "eggs"] for i in li: i = "foo" print(li) # Output: ["spam", "eggs"]
ループ内で "foo" を i に代入しても、その内容は李の変化はありません。この動作は、Python がリストを反復処理する方法に由来します。
ループの仕組み
li の i のループは、次のように動作します。
for idx in range(len(li)): i = li[idx] i = 'foo'
したがって、i に新しい値を代入しても、li の i 番目の要素は変更されません。ループ内のリスト要素を変更するには、別のアプローチが必要です。
代替ソリューション
解決策の 1 つは、リスト内包表記を使用することです。
li = ["foo" for i in li] print(li) # Output: ["foo", "foo"]
あるいは、インデックスを反復処理します。 list:
for idx in range(len(li)): li[idx] = 'foo' print(li) # Output: ["foo", "foo"]
最後に、enumerate も利用できます:
for idx, item in enumerate(li): li[idx] = 'foo' print(li) # Output: ["foo", "foo"]
ループの仕組みを理解し、適切なメソッドを採用することで、プログラマは Python のループ内のリスト要素を効果的に変更できます。
以上がPython リスト ループで「i」を変更してもリストが変更されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。