Copier des listes imbriquées en Python

je veux copier un 2D liste, de sorte que si je modifie une liste, l'autre n'est pas modifié.

pour une liste unidimensionnelle, je fais juste ceci:

a = [1, 2]
b = a[:]

Et maintenant, si je modifie b , a n'est pas modifié.

mais cela ne fonctionne pas pour une liste bidimensionnelle:

a = [[1, 2],[3, 4]]
b = a[:]

si je modifie b , a est modifié aussi.

Comment puis-je résoudre ce problème?

24
demandé sur vaultah 2010-03-30 03:10:34

2 réponses

pour une solution plus générale qui fonctionne quel que soit le nombre de dimensions, utilisez copy.deepcopy() :

import copy
b = copy.deepcopy(a)
40
répondu Ayman Hourieh 2010-03-29 23:13:01
b = [x[:] for x in a]
40
répondu Ignacio Vazquez-Abrams 2010-03-29 23:11:48