#python #list #duplicates
#python #Список #дублирует
Вопрос:
Мне нужно иметь возможность дублировать список списков в python.
итак, например, прямо сейчас у меня есть функция, которая возвращает список.
это всегда списки внутри списка.
например:
myList = [[1,2,3],[4,5,6],[7,8,9]]
теперь мне нужно создать две копии этого списка (myList1 и myList2), каждая из которых может изменяться отдельно (например, если я редактирую myList1, myList2 редактироваться не будет)
Я перепробовал все.
из простого:
myList1 = myList[:]
myList2 = myList[:]
к более сложным:
myList1 = []
for ch in myList:
myList1.append(ch)
myList2 = []
for ch in myList:
myList2.append(ch)
ничего не работает. Если я изменю значение в одном списке:
myList1[0][0] = 10
оба списка становятся:
[[10,2,3],[4,5,6],[7,8,9]]
Есть идеи, как это сделать?
Ответ №1:
Все, что вы пробовали до сих пор, создает только поверхностную копию внешнего списка. Чтобы создать глубокую копию, используйте либо
copied_list = [x[:] for x in my_list]
используя понимание списка или
copied_list = copy.deepcopy(my_list)
используя copy.deepcopy()
функцию.
Ответ №2:
Использовать copy.deepcopy
.
myList2 = copy.deepcopy(myList1)
Посмотрите, как это работает онлайн: ideone