[Python] Solution au problème que les éléments sont liés lors de la copie d'une liste

introduction

Python: 3.7.4

Copiez la liste a dans la liste b, comme vous le feriez pour une valeur Supposons que vous modifiez uniquement l'élément central de la liste b.

copy_test.py


a = [1, 2, 3, 4, 5]
b = a
b[2] =5
print(a)
print(b)

Résultat de l'exécution (exemple d'échec)

Pour une raison quelconque, l'élément au milieu de la liste a également changé.

production


[1, 2, 5, 4, 5]
[1, 2, 5, 4, 5]

Solution 1: utilisez le module de copie

Avec le module de copie, la liste a et la liste b ne sont plus liées.

copy_test2.py


import copy

a = [1, 2, 3, 4, 5]
b = copy.deepcopy(a)
b[2] =5
print(a)
print(b)

Solution 2: utiliser des tranches

Si vous écrivez un [:], tout dans l'élément sera passé à la liste b.

copy_test3.py


a = [1, 2, 3, 4, 5]
b = a[:]
b[2] =5
print(a)
print(b)

<22/12/2019: De shiracamus> copy.deepcopy fait une copie complète, mais les copies copy.copy et slice sont des copies superficielles. L'effet demeure dans le cas de listes multiples. → La solution 2 ne semble pas fonctionner dans le cas de listes multiples.

copy_test4.py


a = [[1], [2], [3], [4], [5]]
b = a[:]
b[2][0] = 5
print(a)
print(b)

Comme vous l'avez souligné, plusieurs listes lieront les résultats.

production


[[1], [2], [5], [4], [5]]
[[1], [2], [5], [4], [5]]

Résultat de l'exécution (exemple de réussite)

Comme prévu, seul l'élément central de la liste b a changé. Il semble plus sûr d'utiliser la solution 1 car la solution 2 a le problème qu'elle ne peut pas être utilisée avec plusieurs listes.

production


[1, 2, 3, 4, 5]
[1, 2, 5, 4, 5]

Recommended Posts

[Python] Solution au problème que les éléments sont liés lors de la copie d'une liste
Une solution au problème que les fichiers contenant [et] ne sont pas répertoriés dans glob.glob ()
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
Notation d'inclusion de liste Python facile à oublier
amateur python tente de résumer la liste ②
Solution au problème qui ne se termine pas lors de l'installation d'OpenCV (PEP517)
Choses à noter lors de l'initialisation d'une liste en Python
Comment sous-lister une liste incluant les éléments restants en la divisant en longueurs spécifiques
Une histoire bloquée lors de la tentative de mise à niveau de la version Python avec GCE
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
Comment trouver le premier élément qui correspond aux critères de la liste Python
Comment résoudre le problème de redémarrage du noyau lors de l'exécution du système PyQt avec jupyter ou Spyder IDE
Assurez-vous que tous les éléments de la liste sont les mêmes en Python
Obtenez le nombre d'éléments spécifiques dans la liste python
Points à noter lors de la suppression de plusieurs éléments de la liste
Comment obtenir la dernière (dernière) valeur d'une liste en Python
[Python3] Liste des sites auxquels j'ai fait référence lorsque j'ai lancé Python
Trouver une solution au problème N-Queen avec un algorithme génétique (1)
Extraire la valeur la plus proche d'une valeur à partir d'un élément de liste en Python
Python> liste> append () et extend ()> append: Ajouter une liste | extend: Ajouter un élément de liste | Ajouter une liste avec + =
Je voulais résoudre le problème ABC164 A ~ D avec Python
Importez un module souvent utilisé lors du démarrage de l'interpréteur python
Un script qui renvoie 0, 1 attaché au premier Python prime
[python] Une note que j'ai commencé à comprendre le comportement de matplotlib.pyplot
Solution au problème que l'affichage est corrompu lorsque la commande .exe est incluse dans la boucle while dans wsl2
Comment gérer le problème du déplacement du répertoire actuel lorsque Python est exécuté depuis Atom
Une histoire qui n'a pas fonctionné lorsque j'ai essayé de me connecter avec le module de requêtes Python
Éviter le phénomène d'insertion de lignes vides lors de la sortie de Python CSV
[Introduction à Python] Quelle est la différence entre une liste et un taple?
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
LeetCode 141. Exemple de solution de cycle de liste liée (Python)
[Python] Un programme qui calcule le nombre de chaussettes jumelées
Extension de Python par C ou C ++ (lorsqu'il y a plusieurs arguments, lors du passage d'une liste du côté Python)
Une fonction qui génère une liste avec des éléments jusqu'à 3 chiffres
Comment résoudre le problème de l'échec de la construction lorsque CI / CD de Python Function avec AWS Amplify
La somme de contrôle NVM n'est pas valide, une solution au problème que le LAN câblé d'Intel ne reconnaît pas sous Linux.
10 erreurs Python communes aux débutants
Python amateur tente de résumer la liste ①
Comment écrire une chaîne de caractères lorsqu'il y a plusieurs lignes en python
[Python] Un programme qui arrondit le score
Comment gérer le problème de déformation des caractères japonais lors de la sortie de journaux à l'aide du formateur de journaux JSON
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Essayez de résoudre le problème du voyageur de commerce avec un algorithme génétique (code Python)
Atcoder Beginner Contest A, B Résumé d'entrée qui a tendance à être un problème Python
Sont Php / Ruby / Python qui ne s'exécute que lorsque le fichier est appelé directement
Solution au problème que vous ne pouvez pas activer en mettant conda dans pyenv
Script Python pour obtenir une liste d'exemples d'entrée pour le concours AtCoder
Une histoire à laquelle j'étais accro après la communication SFTP avec python
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Python] Compréhension de liste Différentes façons de créer une liste
[python] Comment afficher les éléments de la liste côte à côte
[python] Vérifier les éléments de la liste tous, tous
Calculons en fait le problème statistique avec Python
Comment effacer un taple dans une liste (Python)
Copiez la liste en Python
Remarque Python: lors de l'attribution d'une valeur à une chaîne
[Algorithm x Python] Comment utiliser la liste
Notez que la notation d'inclusion de liste de Python est toujours déroutante