Lista de Python frente a tuplas (con ejemplos)

En este artículo aprenderemos las diferencias clave entre la lista y las tuplas y cómo utilizar estas dos estructuras de datos.

Las listas y tuplas almacenan uno o más objetos o valores en un orden específico. Los objetos almacenados en una lista o tupla pueden ser de cualquier tipo, incluido el tipo nada definido por la palabra clave Ninguno.

Las listas y las tuplas son similares en la mayoría de los contextos, pero hay algunas diferencias que vamos a encontrar en este artículo.

Diferencias de sintaxis

La sintaxis de lista y tupla es ligeramente diferente. Las listas están entre corchetes ()y las tuplas entre paréntesis ().

Ejemplo 1.1: Crear una lista frente a crear una tupla

 list_num = (1,2,3,4) tup_num = (1,2,3,4) print(list_num) print(tup_num)

Salida:

 (1,2,3,4) (1,2,3,4)

Arriba, definimos una variable llamada list_num que contiene una lista de números del 1a 4. La lista está rodeada por corchetes (). Además, definimos una variable tup_num; que contiene una tupla de número de 1a 4. La tupla está entre paréntesis ().

En Python tenemos una type()función que da el tipo de objeto creado.

Ejemplo 1.2: Encuentre el tipo de estructura de datos usando la función type ()

 type(list_num) type(tup_num)

Salida:

 lista de tupla

Lista mutable vs tuplas inmutables

La lista tiene naturaleza mutable, es decir, la lista se puede cambiar o modificar después de su creación según las necesidades, mientras que la tupla tiene naturaleza inmutable, es decir, la tupla no se puede cambiar o modificar después de su creación.

Ejemplo 2.1: Modificar una lista de elementos frente a una tupla

 list_num(2) = 5 print(list_num) tup_num(2) = 5

Salida:

 (1,2,5,4) Traceback (última llamada más reciente): archivo "python", línea 6, en TypeError: el objeto 'tuple' no admite la asignación de elementos

En el código anterior asignamos 5a list_num en el índice 2y encontramos 5en el índice 2en la salida. Además, asignamos 5a tup_num en index 2y obtuvimos type error. No podemos modificar la tupla debido a su naturaleza inmutable.

Nota: Como la tupla es inmutable, estos son de tamaño fijo y la lista es de tamaño variable.

Operaciones disponibles

Lists tiene más función incorporada que la de tupla. Podemos usar la dir((object))función incorporada para obtener todas las funciones asociadas para la lista y la tupla.

Ejemplo 3.1: Listar directorio

 dir(list_num)

Salida:

('__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__ __gt__ ',' __hash__ ',' __iadd__ ',' __imul__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' , '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook'__,', clear 'appe copiar ',' contar ',' extender ',' índice ','insert ',' pop ',' remove ',' reverse ',' sort ')

Ejemplo 3.2: Directorio de tuplas

 dir(tup_num)

Salida:

 ('__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__' __gt__ ',' __hash__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __new__ ',' __reduce____ ',' __new__ ',' __reduce____ ' , '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index')

Podemos ver claramente que hay tantas funcionalidades adicionales asociadas con una lista sobre una tupla. Podemos hacer operaciones de inserción y pop, eliminando y clasificando elementos en la lista con funciones incorporadas que no están disponibles en Tuple.

Comparación de tamaño

La operación de tuplas tiene un tamaño más pequeño que la de la lista, lo que la hace un poco más rápida, pero no mucho que mencionar hasta que tenga una gran cantidad de elementos.

Ejemplo 5.1: Calcular el tamaño de la lista frente a la tupla

 a= (1,2,3,4,5,6,7,8,9,0) b= (1,2,3,4,5,6,7,8,9,0) print('a=',a.__sizeof__()) print('b=',b.__sizeof__())

Salida:

 a = 104 b = 120

En el código anterior tenemos la tupla ay la lista b con los mismos elementos, pero el tamaño de la tupla es menor que la lista.

Diferentes casos de uso

A primera vista, podría parecer que las listas siempre pueden reemplazar a las tuplas. Pero las tuplas son estructuras de datos extremadamente útiles

  1. El uso de una tupla en lugar de una lista puede dar al programador y al intérprete una pista de que los datos no deben cambiarse.
  2. Las tuplas se utilizan comúnmente como el equivalente de un diccionario sin claves para almacenar datos. Por ejemplo,
     (('Pez espada', 'Dominic Sena', 2001), ('Snowden', 'Oliver Stone', 2016), ('Taxi Driver', 'Martin Scorsese', 1976))
    El ejemplo anterior contiene tuplas dentro de la lista que tiene una lista de películas.
  3. La lectura de datos es más sencilla cuando las tuplas se almacenan dentro de una lista. Por ejemplo,
     ((2,4), (5,7), (3,8), (5,9))
    es más fácil de leer que
     ((2,4), (5,7), (3,8), (5,9))

Tuple también se puede usar como clave en el diccionario debido a su naturaleza hash e inmutable, mientras que las listas no se usan como clave en un diccionario porque la lista no se puede manejar __hash__()y tiene una naturaleza mutable.

 key_val= (('alpha','bravo'):123) #Valid key_val = (('alpha','bravo'):123) #Invalid 

Puntos clave para recordar:

  1. La sintaxis literal de las tuplas se muestra entre paréntesis, ()mientras que la sintaxis literal de las listas se muestra entre corchetes ().
  2. Las listas tienen una longitud variable, la tupla tiene una longitud fija.
  3. La lista tiene una naturaleza mutable, la tupla tiene una naturaleza inmutable.
  4. La lista tiene más funciones que la tupla.

Articulos interesantes...