Listas vs tuplas en Python

    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.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *