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)
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]
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)
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]]
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]