¿Por qué las listas necesitan índices anidados para mostrarse?
Este problema se debe al hecho de que Python elige pasar listas por referencia.
Normalmente, las variables se pasan por "valor", por lo que operan de forma independiente:
gt; gt; a = 1
gt; gt = a
gt; gt; gt;gt;print b
1
Sin embargo, dado que la lista puede ser bastante grande, en lugar de sacar toda la lista de la memoria, Python elige usar referencias (en C "puntero"). Si asigna una variable a otra variable, solo le asigna una referencia. Esto significa que puede tener dos variables apuntando a la misma lista en la memoria:
gt; ; a = [1]
gt; gt; b = a
gt; a[0] = 2
gt; gt;gt;print b
[2]
Entonces, en tu primera línea de código tienes 4 * [0]. Ahora [0] apunta a un puntero al. valor 0 en la memoria, cuando lo multiplicas, obtienes cuatro punteros a la misma ubicación en la memoria, pero cuando cambias uno de los valores, Python sabe que los punteros deben cambiar para apuntar al nuevo valor:
<. p>gt;gt;gt; a = 4 * [0]gt;gt;gt; a
[0, 0, 0, 0]
gt;gt;gt; [id(v) para v en a]
[33302480, 33302480, 33302480, 33302480]
gt;gt;gt; ] = 1
gt;gt;gt; a
[1, 0, 0, 0]
Cuando multiplicas esta lista, ocurre el problema: obtienes cuatro copias del puntero de lista. Ahora, cuando cambias un valor en una lista, los cuatro cambian juntos:
gt;gt;gt;a[0 ][0] = 1
.gt;gt;gt; a
[[1, 0, 0, 0], [1, 0, 0, 0], [1 , 0, 0, 0], [1 , 0, 0, 0]]
La solución es evitar la segunda multiplicación. Un bucle hace el trabajo:
gt;gt ;gt; 0]) for _ in range(4)]
índice de lista anidada de Python
Conceptos básicos de Python: operaciones de lista de lista y lista de anidamiento
2,5 W de lecturas · 20 comentarios · 28 me gusta
30 de enero de 2019
índice de lista anidada de Python index_in lista anidada de Python Encuentra todas las apariciones de una cadena y su índice en
530 lecturas · 0 comentarios · 0 me gusta
10 de febrero de 2021
Índice de lista de anidación de Python_Índice de lista anidada
442 lecturas·0 comentarios·0 Me gusta
5 de diciembre de 2020
Lista de clasificación y devolución de funciones index_Python: lista, puede controlarla fácilmente después de leerla y quitarla sin agradecimiento
52 lecturas · 0 comentarios · 0 me gusta
17 de noviembre de 2020
Listas anidadas en Python
9976 lecturas·0 comentarios·8 me gusta
24 de marzo de 2022 p>