web-dev-qa-db-fra.com

Copie de listes imbriquées dans Python

Je veux copier une liste 2D, de sorte que si je modifie une liste, l'autre ne soit pas modifiée.

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 à deux dimensions:

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

Si je modifie b, a est également modifié.

Comment puis-je réparer ça?

46
SuperString

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)
51
Ayman Hourieh
b = [x[:] for x in a]
49

vous pouvez également utiliser ce code sans importer le package de copie

b=a.copy()
0
Milad