ホームページ  >  記事  >  バックエンド開発  >  Python の集合コレクションは変数型ですか?

Python の集合コレクションは変数型ですか?

anonymity
anonymityオリジナル
2019-06-13 09:36:227113ブラウズ

可変/不変オブジェクトとは

不変オブジェクト、オブジェクトが指すメモリ内の値は変更できません。変数を変更すると、参照している値は変更できないため、元の値をコピーして変更することと同じになり、新しいアドレスが開かれ、変数はこの新しいアドレスを指すことになります。

変数オブジェクト、オブジェクトが指すメモリ内の値を変更できます。変数 (正確には参照) が変更されると、実際にはその変数が参照する値が直接変更されます。コピーは発生せず、新しいアドレスも開かれません。平たく言えば、その場で変更されます。

Python の集合コレクションは変数型ですか?

Python では、数値型 (int と float)、文字列 str、およびタプル tuple はすべて不変型です。リスト、ディクショナリ、セットは変数タイプです。

コードを見る方が直感的です。 セット コレクションのコードを見てください:

abb = {1, 2, 3}
acc = abb
print(id(abb), id(acc))
acc.add(4)
print(abb)  # {1, 2, 3, 4} 
print(id(abb), id(acc)) # 相等

変数オブジェクトは変更できます。ポイントされたオブジェクトは変更できるため、コピーを作成してから変更する必要はなく、その場で変更するだけです。そのため、新しいメモリは開かれず、変更の前後で ID は変化しません。

もちろん、これは不変オブジェクトの場合には当てはまりません。これと比較できます。

abc = 3
dd = abc
dd = 43
print(abc)  # 3,并不随dd的改变而改变

ただし、コピーの場合は、コンテンツがコピーされるだけで、転送はされません。参考にせずに。これは、元のリストを変更せずにリストの値を使用したい場合に特に便利です。

rree

以上がPython の集合コレクションは変数型ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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