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

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

DDD
リリース: 2024-12-08 00:32:15
オリジナル
922 人が閲覧しました

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

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

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