Comment la référence du tableau python change en fonction de la présence ou de l'absence d'indices

Cette fois, il s'agit d'une expérience pour examiner de plus près ce que les variables indiquent. La version de python est la 3.4.3.

Modifier un objet à partir d'une autre variable

Même si vous affectez le contenu d'une variable à une autre variable, elle pointe vers le même objet. Vérifiez cela en comparant les identifiants des objets.

mylist = [[0, "mike"], [1, "jane"]]
person1 = mylist[0]

print("mylist = %s" % mylist)
print("person1 = %s" % person1)
# =>
# mylist = [[0, 'mike'], [1, 'jane']]
# person1 = [0, 'mike']

#Assurez-vous que les deux variables pointent vers le même objet
print("mylist[0] id = %s" % id(mylist[0]))
print("person1 id = %s" % id(person1))
print(id(mylist[0]) == id(person1))
# => True

#Enregistrer l'identifiant de l'objet actuel pour confirmation ultérieure
person1_id = id(person1)

Essayez de changer les éléments du tableau via une autre variable. Uniquement lorsqu'un indice est spécifié

#la personne est ma liste[0]Assurez-vous qu'il s'agit d'un alias pour
person1[0] = 100
print("mylist = %s" % mylist)
print("person1 = %s" % person1)
# =>
# mylist = [[100, 'mike'], [1, 'jane']]
# person1 = [100, 'mike']

L'élément a été modifié avec succès. Cependant, si vous n'utilisez pas d'indices, vous ne pouvez pas modifier l'élément et un nouvel objet est attribué.

#via pesron1 mylist[1]Tentative de modification de la séquence
person1 = [5, "michel"]
print("mylist = %s" % mylist)
print("person1 = %s" % person1)
# =>
# mylist = [[100, 'mike'], [1, 'jane']]
# person1 = [5, 'michel']

person1 = 5
print("mylist = %s" % mylist)
print("person1 = %s" % person1)
# => 
# mylist = [[100, 'mike'], [1, 'jane']]
# person1 = 5

Si vous le comparez avec l'ID de l'objet lorsque les éléments du tableau précédent ont été inclus, vous pouvez voir que l'objet a certainement changé.

#Comparer avec l'ID avant de changer d'objet
print(person1_id == id(person1))
# => False

Ce à quoi la variable pointe

Illustrons le phénomène ci-dessus. Le premier est le cas de l'utilisation d'indices. Notez que les indices ne font pas référence au tableau (liste dans ce cas), mais à ses éléments. Puisque nous avons seulement changé la référence (flèche) de l'élément du tableau, les variables qui faisaient référence au tableau restent les mêmes que la référence au tableau.

python_index_01_150702.jpg

Vient ensuite le cas sans indices. Dans l'expérience précédente, dans ce cas, la modification de la valeur d'une autre variable n'affectait pas la variable d'origine. C'est parce que j'ai changé la référence au tableau en référence au nouvel objet.

python_index_02_150702.jpg

Recommended Posts

Comment la référence du tableau python change en fonction de la présence ou de l'absence d'indices
rsync Le comportement change en fonction de la présence ou de l'absence de la barre oblique de la source de copie
En Python, changez le comportement de la méthode en fonction de la façon dont elle est appelée
Sakura L'histoire du fonctionnement de la bouteille Python sur Internet
Prédire la présence ou l'absence d'infidélité par l'apprentissage automatique
Comment mettre à jour la version Python de Cloud Shell dans GCP
Le processus d'extraction répétée d'un tableau diffère légèrement selon la langue ...
[python] Comment trier par le Nth Mth élément d'un tableau multidimensionnel
J'ai essayé de prédire la présence ou l'absence de neige par apprentissage automatique.
Liste de contrôle pour éviter de transformer les éléments de array of numpy avec for
[Python numpy] Spécifiez dynamiquement l'index du tableau
Sortie sous la forme d'un tableau python
Au moment de la mise à jour de python avec ubuntu
Un moyen simple de remplir le début de 0 en fonction du nombre de chiffres dans le nombre [Python]
Réfléchissez à la programmation de Python sur votre iPad
Comment obtenir le nombre de chiffres en Python
Différence de résultats en fonction de l'argument du multiprocessus.
[Python] Résumé de la façon de spécifier la couleur de la figure
Comment profiter de Python sur Android !! Programmation en déplacement !!
Combien connaissez-vous les bases de Python?
La valeur de retour de len ou unichr peut changer selon qu'il s'agit de UCS-2 ou UCS-4.
Comment connaître le nombre de GPU de python ~ Remarques sur l'utilisation du multitraitement avec pytorch ~
Confirmé la différence de présence ou d'absence de traitement aléatoire lors de l'apprentissage par mini-lots avec chainer
le zen de Python
Mettez la dernière version de Python dans Linux (Debian) du Chromebook
Différence de sys.path en fonction du démarrage de Python (v3.8.2)
[Hyperledger Iroha] Remarques sur l'utilisation du SDK Python
[Jinja2] Changement de saut de ligne en fonction de la position du trait d'union
Comment déployer Pybot, le manuel Python le plus simple, sur Heroku
Partie 1 J'ai écrit la réponse au problème de référence de l'écriture hors ligne en temps réel en Python
[Python] Comment utiliser l'instruction for. Une méthode d'extraction en spécifiant une plage ou des conditions.