ホームページ >バックエンド開発 >Python チュートリアル >Python リスト: 値渡しか参照渡しか?

Python リスト: 値渡しか参照渡しか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-27 18:34:12961ブラウズ

Python Lists: Pass by Value or Reference?

Python でのリスト操作: 値による受け渡しと参照による受け渡し

Python でリストを操作する際の共通の課題の 1 つは、受け渡しの概念です。参照して、それがリストの変更にどのように影響するかを理解することによって。この問題を説明するためのシナリオを検討してみましょう。

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

この例では、リスト 'b' に値を追加するつもりですが、驚くべきことに、リスト 'a' の値も変更されます。これは、Python ではリスト (およびその他のオブジェクト) が参照によって渡され、同じメモリ位置を共有するためです。

したがって、'b' を 'a' に代入しても、新しいリストを作成しますが、同じリストを参照します。したがって、一方のリストに加えられた変更は、もう一方のリストにも反映されます。

値渡しの方法

意図しない変更を避けるには、新しいリストを作成する必要があります。それはオリジナルのコピーです。 Python では、スライスを使用してこれを実現できます。

b = a[:]

リスト 'a' でスライス演算子 [:] を使用すると、'a' のすべての要素を含む新しいリスト 'b' が作成されます。ただし、別のメモリ場所を占有します。これで、「b」に加えられた変更は「a」には影響しません。

以上がPython リスト: 値渡しか参照渡しか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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