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 *