Colección de citas famosas - Mensajes de felicitación - ¿Por qué las listas necesitan índices anidados para mostrarse?

¿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