Дублировать список списков в python?

#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