Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuál es la diferencia entre listas y tuplas en Python?

¿Cuál es la diferencia entre listas y tuplas en Python?

Además de que las tuplas sean inmutables, debe haber distinciones semánticas para guiar su uso. Las tuplas son estructuras de datos heterogéneas (es decir, sus entradas tienen significados diferentes), mientras que las listas son secuencias homogéneas. Las tuplas tienen estructura, las listas tienen orden.

Utilizar esta distinción puede hacer que su código sea más claro y fácil de entender.

Un ejemplo es un par de números de página y de línea para emparejar una ubicación en un libro de referencia, como por ejemplo:

mi_ubicación = (42, 11) # número de página, número de línea

Esto luego se puede usar como clave en un diccionario para almacenar notas sobre la ubicación. Las listas, por otro lado, se pueden utilizar para almacenar múltiples ubicaciones. Naturalmente, es posible que las personas quieran agregar o eliminar ubicaciones de la lista, por lo que tiene sentido hacer que la lista sea mutable. Por otro lado, no tiene sentido agregar o eliminar elementos de posiciones existentes; por lo tanto, las tuplas son inmutables.

En algunos casos, es posible que desee cambiar los elementos en una tupla de posición existente, como cuando se itera por las filas de una página. Pero la inmutabilidad de tuplas te obliga a crear una nueva tupla posicional para cada nuevo valor. A primera vista, esto puede parecer inconveniente, pero el uso de datos tan inmutables es la piedra angular de los tipos de valores y las técnicas de programación funcional, y puede tener muchas ventajas.

La documentación oficial de Python también menciona esto

"Los grupos son inmutables y normalmente contienen una secuencia heterogénea...".

En un lenguaje de tipo estático como Haskell, los valores de una tupla suelen tener diferentes tipos y la longitud de la tupla debe ser fija. En una lista, todos los valores son del mismo tipo y la longitud no es fija. Entonces la diferencia es muy obvia.