ayuda xq mi lista original cambia si modifiqué la copia?? (es tarea, lo admito)
q onda, es para una tarea de estructuras de datos, no quiero q me la hagan solo entender q pasa jsjsjs matriz = [[0, 0], [0, 0]] copia = matriz copia[0][0] = 5 print(matriz) # [[5, 0], [0, 0]] ?????? despues lei q se usa .copy() y lo cambie: copia = matriz.copy() copia[0][0] = 5 print(matriz) # [[5, 0], [0, 0]] OTRA VEZ alv xq pasa esto si ya use copy?? el profe dijo algo de "referencias" pero no le entendi
Accepted answer
jaja bienvenido al club, a todos nos pasó wey. Va explicado: En Python las variables son etiquetas que apuntan a objetos, no cajas. Cuando haces copia = matriz, las dos etiquetas apuntan a LA MISMA lista. Con matriz.copy() sí creas una lista nueva... pero es una copia superficial (shallow): la lista de afuera es nueva, pero adentro sigue teniendo LAS MISMAS listas internas. Entonces copia[0] y matriz[0] son el mismo objeto. Puedes comprobarlo: print(copia is matriz) # False print(copia[0] is matriz[0]) # True, aquí está el problema Soluciones: import copy copia = copy.deepcopy(matriz) o para una matriz de números: copia = [fila.copy() for fila in matriz] Y ojo con esta trampa que sale en exámenes: matriz = [[0] * 2] * 2 también crea dos filas que son la misma lista. Mejor [[0] * 2 for _ in range(2)].