ホームページ >バックエンド開発 >Python チュートリアル >Python のリスト割り当てはどのように機能するのでしょうか?また、ネストされたリストを変更する際の予期せぬ動作を回避するにはどうすればよいですか?

Python のリスト割り当てはどのように機能するのでしょうか?また、ネストされたリストを変更する際の予期せぬ動作を回避するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-29 01:10:111048ブラウズ

How Does Python's List Assignment Work, and How Can I Avoid Unexpected Behavior When Modifying Nested Lists?

Python でのリストの割り当てを理解する

Python では、リストは可変オブジェクトであり、その内容は変更できることを意味します。リストを別の変数に割り当てる場合、両方の変数は同じ基になるリスト オブジェクトを参照します。これは参照による代入と呼ばれます。

参照渡しの問題

この動作は、ネストされたリストを変更するときに予期しない結果を引き起こす可能性があります。たとえば、「a」の値を変更すると、同じバッキング リスト オブジェクトを共有するため「b」にも影響します:

a = ['help', 'copyright', 'credits', 'license']
b = a
b.append('XYZ')
print(a)  # ['help', 'copyright', 'credits', 'license', 'XYZ']

値によるリストの受け渡し

Python でリストを値で渡すには、元のリストのコピーを作成する必要があります。これは、スライス演算子を使用して行うことができます。

b = a[:]

これにより、「a」と同じ内容を持つ新しいリスト オブジェクトが作成されます。さて、'b' に追加しても 'a' には影響しません:

b.append('XYZ')
print(a)  # ['help', 'copyright', 'credits', 'license']
print(b)  # ['help', 'copyright', 'credits', 'license', 'XYZ']

結論

ネストされたオブジェクトを変更する際の意図しない動作を回避するには、Python でのリスト割り当てを理解することが重要です。リスト。スライス演算子を使用すると、リストを値で渡し、あるリストの変更が他のリストに反映されないようにすることができます。

以上がPython のリスト割り当てはどのように機能するのでしょうか?また、ネストされたリストを変更する際の予期せぬ動作を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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