Копирование вложенных списков в Python - PullRequest
37 голосов
/ 30 марта 2010

Я хочу скопировать 2D-список, чтобы при изменении одного списка другой не изменялся.

Для одномерного списка я просто делаю это:

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

И теперь, если я изменяю b, a не изменяется.

Но это не работает для двумерного списка:

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

Если я изменю b, a также будет изменен.

Как мне это исправить?

Ответы [ 3 ]

51 голосов
/ 30 марта 2010

Для более общего решения, которое работает независимо от количества измерений, используйте copy.deepcopy():

import copy
b = copy.deepcopy(a)
47 голосов
/ 30 марта 2010
b = [x[:] for x in a]
0 голосов
/ 25 апреля 2019

Вы также можете использовать этот код, не импортируя копию пакета

b=a.copy()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...