Maison  >  Article  >  développement back-end  >  La collection set en python est-elle un type variable ?

La collection set en python est-elle un type variable ?

anonymity
anonymityoriginal
2019-06-13 09:36:227055parcourir

Qu'est-ce qu'un objet mutable/immuable

Objet immuable, la valeur dans la mémoire pointée par l'objet ne peut pas être modifiée. Lorsqu'une variable est modifiée, puisque la valeur vers laquelle elle pointe ne peut pas être modifiée, cela équivaut à copier la valeur d'origine puis à la modifier. Cela ouvrira une nouvelle adresse et la variable pointera vers cette nouvelle adresse.

Objet variable, la valeur dans la mémoire pointée par cet objet peut être modifiée. Lorsqu'une variable (une référence pour être précis) est modifiée, la valeur à laquelle elle fait référence est en fait modifiée directement. Aucune copie n'a lieu et aucune nouvelle adresse n'est ouverte. En termes simples, elle est modifiée sur place.

La collection set en python est-elle un type variable ?

En Python, les types numériques (int et float), string str et tuple tuple sont tous des types immuables. Les listes, dictionnaires et ensembles sont des types de variables.

Il est plus intuitif de regarder le code Regardez le code de la collection définie :

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)) # 相等

Les objets variables peuvent être modifiés car l'objet pointé peut être modifié, il n'est donc pas nécessaire de faire une copie puis de le modifier, il suffit de le changer en place, donc aucune nouvelle mémoire ne sera ouverte et l'identifiant restera inchangé avant et après le changement.

Bien sûr, ce n'est pas le cas pour les objets immuables. Vous pouvez le comparer avec ceci

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

Mais s'il s'agit d'une copie, il copie simplement le contenu et ne transfère pas. sans référence. Ceci est particulièrement utile lorsque l'on souhaite utiliser les valeurs d'une liste sans modifier la liste d'origine.

blist = alist[:]  # or alist.copy()
print(alist is blist)  # False
blist.append(4)
print(alist)  # 还是[1,2 ,3]没有变化

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn