¿Cómo hacer una copia completamente no compartida de una lista complicada? (Copia profunda no es suficiente)

Echa un vistazo a este código de Python:

a = [1, 2, 3]
b = [4, 5, 6]
c = [[a, b], [b, a]] # [[[1, 2, 3], [4, 5, 6]], [[4, 5, 6], [1, 2, 3]]]
c[0][0].append(99)   # [[[1, 2, 3, 99], [4, 5, 6]], [[4, 5, 6], [1, 2, 3, 99]]]

Observe cómo modificar un elemento dec Modifica eso en todas partes. Es decir, si99 se anexa ac[0][0], también se anexa ac[1][1]. Supongo que esto es porque Python es hábilmentereferente almismo objeto parac[0][0] yc[1][1]. (Esa es sucarné de identidad() es el mismo.)

Pregunta: ¿Hay algo que se pueda hacer parac ¿Para que sus elementos de la lista puedan ser modificados de manera local? Lo anterior es solo un ejemplo, mi problema real tiene una lista mucho más complicada, pero tiene un problema similar.

(Disculpe la pregunta mal formada arriba. Los gurús de Python pueden modificar la pregunta o las etiquetas para expresar mejor esta consulta).

Respuestas a la pregunta(5)

Su respuesta a la pregunta