ホームページ >バックエンド開発 >Python チュートリアル >「for」ループ内で 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 サイトの他の関連記事を参照してください。