Listas vs tuplas en Python

L

Introducción

Las listas y tuplas son dos de las estructuras de datos más utilizadas en Python, siendo el diccionario la tercera. Las listas y tuplas tienen muchas similitudes. Algunos de ellos se han alistado a continuación:

  • Ambos son tipos de datos de secuencia que almacenan una colección de elementos.
  • Pueden almacenar elementos de cualquier tipo de datos.
  • Y cualquier elemento es accesible a través de su índice.

Entonces, la pregunta que estamos tratando de responder aquí es, ¿en qué se diferencian? Y si no hay diferencia entre los dos, ¿por qué deberíamos tener los dos? ¿No podemos tener listas o tuplas?

En este artículo, mostraremos cómo las listas y las tuplas se diferencian entre sí.

Diferencia de sintaxis

En Python, las listas y tuplas se declaran de diferentes formas. Se crea una lista usando corchetes [] mientras que la tupla se cea usando paréntesis (). Mira el siguiente ejemplo:

tuple_names = ('Nicholas', 'Michelle', 'Alex')
list_names = ['Nicholas', 'Michelle', 'Alex']
print(tuple_names)
print(list_names)

Salida:

('Nicholas', 'Michelle', 'Alex')
['Nicholas', 'Michelle', 'Alex']

Definimos una tupla llamada tuple_names y una lista llamada list_names. En la definición de tupla, usamos paréntesis () mientras que en la definición de la lista, usamos corchetes [].

Python tiene el type() objeto que nos ayuda a conocer el tipo de objeto que se ha creado. Podemos usarlo de la siguiente manera:

print(type(tuple_names))
print(type(list_names))

Salida:

<class 'tuple'>
<class 'list'>

Mutable frente a inmutable

Las listas son mutables mientras que las tuplas son inmutables, y esto marca la diferencia CLAVE entre las dos. Pero, ¿qué queremos decir con esto?

La respuesta es esta: podemos cambiar / modificar los valores de una lista pero no podemos cambiar / modificar los valores de una tupla.

Dado que las listas son mutables, no podemos usar una lista como clave en un diccionario. Esto se debe a que solo un objeto inmutable se puede usar como clave en un diccionario. Por lo tanto, podemos usar tuplas como claves de diccionario si es necesario.

Echemos un vistazo a un ejemplo que demuestra la diferencia entre listas y tuplas en términos de inmutabilidad.

Creemos una lista de nombres diferentes:

names = ["Nicholas", "Michelle", "Alex"]

Veamos qué pasará si intentamos cambiar el primer elemento de la lista de “Nicholas” a “Samuel”:

names[0] = "Samuel"

Tenga en cuenta que el primer elemento está en el índice 0.

Ahora, mostremos el contenido de la lista:

>>> names

Salida:

['Samuel', 'Michelle', 'Alex']

¡La salida muestra que el primer elemento de la lista se cambió correctamente!

¿Qué pasa si intentamos hacer lo mismo con una tupla? Veamos:

Primero, crea la tupla:

 names = ("Nicholas", "Michelle", "Alex")

Intentemos ahora cambiar el primer elemento de la tupla de “Nicholas” a “Samuel”:

names[0] = "Samuel"

Salida:

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    names[0] = "Samuel"
TypeError: 'tuple' object does not support item assignment

Recibimos un error que indica que un objeto de tupla no admite la asignación de elementos. El motivo es que un objeto de tupla no se puede cambiar una vez creado.

Reutilizado frente a copiado

Las tuplas no se pueden copiar. La razón es que las tuplas son inmutables. Si tu corres tuple(tuple_name), volverá inmediatamente. Por ejemplo:

names = ('Nicholas', 'Michelle', 'Alex')
copyNames = tuple(names)
print(names is copyNames)

Salida:

True

Los dos son iguales.

A diferencia de, list(list_name) requiere copiar todos los datos a una nueva lista. Por ejemplo:

names = ['Nicholas', 'Michelle', 'Alex']
copyNames = list(names)
print(names is copyNames)

Salida:

False

A continuación, analicemos cómo la lista y la tupla difieren en términos de tamaño.

Diferencia de tamaño

Python asigna memoria a tuplas en términos de bloques más grandes con una sobrecarga baja porque son inmutables. Por otro lado, para las listas, Pythons asigna pequeños bloques de memoria. Al final, la tupla tendrá una memoria más pequeña en comparación con la lista. Esto hace que las tuplas sean un poco más rápidas que las listas cuando tiene una gran cantidad de elementos.

Por ejemplo:

tuple_names = ('Nicholas', 'Michelle', 'Alex')
list_names = ['Nicholas', 'Michelle', 'Alex']
print(tuple_names.__sizeof__())
print(list_names.__sizeof__())

Salida:

48
64

La salida anterior muestra que la lista tiene un tamaño mayor que la tupla. El tamaño mostrado está en términos de bytes.

Homogéneo frente a heterogéneo

Las tuplas se utilizan para almacenar elementos heterogéneos, que son elementos que pertenecen a diferentes tipos de datos. Las listas, por otro lado, se utilizan para almacenar elementos homogéneos, que son elementos que pertenecen al mismo tipo.

Sin embargo, tenga en cuenta que esto es solo una diferencia semántica. Puede almacenar elementos del mismo tipo en una tupla y elementos de diferentes tipos en una lista. Por ejemplo:

list_elements = ['Nicholas', 10, 'Alex']
tuple_elements = ('Nicholas', "Michelle", 'Alex')

El código anterior se ejecutará sin errores a pesar de que la lista tiene una mezcla de cadenas y un número.

Longitud variable frente a longitud fija

Las tuplas tienen una longitud fija, mientras que las listas tienen una longitud variable. Esto significa que podemos cambiar el tamaño de una lista creada, pero no podemos cambiar el tamaño de una tupla existente. Por ejemplo:

list_names = ['Nicholas', 'Michelle', 'Alex']
list_names.append("Mercy")
print(list_names)

Salida:

['Nicholas', 'Michelle', 'Alex', 'Mercy']

El resultado muestra que se ha agregado un cuarto nombre a la lista. Hemos utilizado Python append() función para esto. Podríamos haber logrado lo mismo a través del insert() funcionar como se muestra a continuación:

list_names = ['Nicholas', 'Michelle', 'Alex']
list_names.insert(3, "Mercy")
print(list_names)

Salida:

['Nicholas', 'Michelle', 'Alex', 'Mercy']

La salida muestra nuevamente que se ha agregado un cuarto elemento a la lista.

Una tupla de Python no nos proporciona una forma de cambiar su tamaño.

Conclusión

Podemos concluir que aunque tanto las listas como las tuplas son estructuras de datos en Python, existen diferencias notables entre las dos, siendo la principal diferencia que las listas son mutables mientras que las tuplas son inmutables. Una lista tiene un tamaño variable, mientras que una tupla tiene un tamaño fijo. Las operaciones en tuplas se pueden ejecutar más rápido en comparación con las operaciones en listas.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con tus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad