ホームページ >バックエンド開発 >Python チュートリアル >「for」ループ内で Python リストを直接変更できないのはなぜですか?

「for」ループ内で Python リストを直接変更できないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-28 01:49:09410ブラウズ

Why Can't I Modify a Python List Directly Within a `for` Loop?

Python リスト変更の難題

for ループを使用して Python でリストをトラバースするとき、ユーザーはリスト内包表記を使用せずにその要素を変更できない予期せぬ事態に遭遇する可能性があります。

なぜアクセスできないのですか?

問題の核心はここにありますfor i in li ループ構造の動作で。内部的には、次のように反復されます。

for idx in range(len(li)):
    i = li[idx]
    i = 'foo'

ご覧のとおり、最初に i にはリスト内の要素への参照が割り当てられます。それ以降の i への変更はローカル変数にのみ影響し、リスト項目自体には影響しません。

ジレンマの解決

これに対処するには、リスト内包表記を活用することができます。

li = ["foo" for i in li]

または、インデックスをトラバースします明示的に:

for idx in range(len(li)):
    li[idx] = 'foo'

または、プロセスを簡素化するために enumerate を使用することもできます:

for idx, item in enumerate(li):
    li[idx] = 'foo'

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

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