Entrada

Python 🐍 : Listas y Tuplas

Las listas y tuplas son estructuras de datos en Python que funcionan como cajas para guardar múltiples elementos.

En Python, las listas y las tuplas son dos de los tipos de datos más fundamentales para almacenar colecciones de elementos. Aunque ambos permiten almacenar múltiples elementos en una sola variable, existen diferencias clave entre ellas que determinan cuándo usar una u otra. En este post, abarcaremos en detalle qué son las listas y tuplas, sus diferencias, y cómo utilizarlas de manera eficientes en nuestros programas.

¿Qué es una Lista?

Una lista en Python es un tipo de dato que representa una colección ordenada y mutable (es decir, que se puede modificar) de elementos. Los elementos de una lista pueden ser de diferentes tipos, incluyendo números, cadenas de texto, otras listas, o incluso objetos personalizados.

El tipo de dato Lista (list) es usado para almacenar una colección de valores. Si vienes de otros lenguajes de programación podemos decir que las listas son similares a los Arrays. Las listas de Python pueden almacenar valores de diferentes tipos.

Características de las Listas

Una lista de Python tiene las siguientes características:

Es ordenada
esto quiere decir que los elementos dentro de ella están indexados y se accede a ellos a través de una locación indexada.
Es mutable
esto significa que los elementos dentro de una lista pueden editarse, añadirse nuevos o eliminar los que ya tiene.
Es dinámica
las listas pueden contener diferentes tipos de datos y hasta de objetos. Esto significa también que puede soportar paquetes multidimensionales de datos, como un array o muchos objetos.
No es única
esencialmente, esto quiere decir que la lista puede contener elementos duplicados sin que nos arroje un error.

Crear listas

Para crear una lista se deben usar los corchetes [] (brackets) de apertura y cierre. Cada item o elemento en la lista debe estar separado de otro por comas ,.

Veamos el siguiente código donde vamos a almacenar en una variable la lista de Python:

1
cars = ['Honda', 'Toyota', 'Audi', 'Ford', 'Susuki', 'Mercedez']

Como se puede observar, es muy simple crear una lista usando los corchetes y en su interior poner cada elemento. Sin embargo no es la única forma de crear lista, Python nos provee de una función integrada list() para conseguir el mismo objetivo.

En el siguiente código vamos hacer el mismo ejemplo anterior pero usando la función list():

1
cars = list(('Honda', 'Toyota', 'Audi', 'Ford', 'Susuki', 'Mercedez'))

Operaciones comunes con Listas

Las operaciones sobre listas en Python son variadas al tratarse de estructuras de datos mutables, lo que significa que sus elementos pueden ser modificados después de haber sido creados. Debido a su mutabilidad, las listas tienen más métodos disponibles, como append(), remove(), sort(), reverse(), entre otros, que permiten agregar, eliminar o cambiar los elementos de manera dinámica:

---
title: "Listas en Python"
---
graph LR
    A["Operaciones Comunes"] --> B["Acceder a elementos"]
    A --> C["Agregar elementos"]
    A --> D["Eliminar elementos"]
    A --> E["Modificar elementos"]
    A --> F["Concatenación y repetición"]
    A --> G["Comprobar existencia"]
    A --> H["Longitud de lista"]
    A --> I["Ordenar lista"]
    A --> J["Invertir lista"]

    B -- "Por índice" --> K["mi_lista[index]"]
    B -- "Por rango" --> L["mi_lista[inicio:final]"]

    C -- "Al final" --> M["mi_lista.append(item)"]
    C -- "Por posición" --> N["mi_lista.insert(pos, item)"]

    D -- "Por valor" --> O["mi_lista.remove(valor)"]
    D -- "El último" --> P["mi_lista.pop()"]
    D -- "Por posición" --> P1["mi_lista.pop(pos)<br>del mi_lista[pos]"]

    F -- "Operador <code>+</code>" --> R["lista1 + lista2"]
    F -- "Operador <code>*</code>" --> S["lista1 * 2"]

    G -- "Usar <code>in</code>" --> T["elemento in mi_lista"]

    H -- "Usar <code>len()</code>" --> U["len(mi_tupla)"]

    I -- "Ordena la lista original" --> V["mi_lista.sort()<br>mi_lista.sort(reverse=True)"]
    I -- "Crea una nueva lista ordenada" --> V1["sorted(mi_lista)<br>sorted(mi_lista, reverse=True)"]

    J -- "Invierte la lista original" --> W["mi_lista.reverse()"]

    classDef wStroke fill:#fff,fill-opacity:0,text-align:left,stroke-width:0,background:#19191922,font-family:monospace,padding:3px,font-size:17px;
    class K,L,M,N,O,P,P1,T,U,R,S,V,V1,W wStroke;

Las listas son útiles cuando necesitas una colección de datos que pueda cambiar a lo largo del tiempo

Como ya sabemos las operaciones comunes que podemos realizar sobre las listas, ahora veamos algunos ejemplos.

Agregar elementos

Para añadir un nuevo elemento al final de la lista tenemos el método append():

1
cars.append("Hyundai")

Por otro lado, si quisieramos añadir un nuevo elemento al principio tenemos el método insert(index, item):

1
2
# 0 es el primer elemento en orden indexado sucesivamente en la secuencia
cars.insert(0, "Hummer")

Eliminar elementos

Para eliminar el último elemento de la lista tenemos el método pop():

1
cars.pop()

Si queremos eliminar el elemento según su índice tenemos el mismo método pop(index):

1
cars.pop(2) # Elimina y retorna el elemento con el índice 1

Si por otro lado, queremos eliminar elemento según su valor tenemos el método remove():

1
cars.remove("Honda")

Extraer elementos

Para extraer elementos de una lista indicando sus índeces, en un intervalo slicing:

1
2
cars # ['Honda', 'Toyota', 'Audi', 'Ford', 'Susuki', 'Mercedez']
cars[2:4] # ['Audi', 'Ford']

Como podemos observar, indicamos [start:to] donde el primer argumento start es el elemento inicial (incluido) y el segundo argumento to es el elemento final (excluido).

Funciones útiles para Listas

Python también nos provee de funciones útiles para trabajar con listas como las siguientes:

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    lista_marca_autos = ['Audi', 'Ford', 'Honda', 'Mercedez', 'Susuki', 'Toyota']
    lista_ordenada = sorted(lista_marca_autos) 
    lista_ordenada_descendente = sorted(lista_marca_autos, reverse=True)
    maximo = max(lista_marca_autos)
    minimo = min(lista_marca_autos)
    lista_longitud = len(lista_marca_autos)
    
    print("Lista ordenada:", lista_ordenada)
    print("Lista ordenada (descendente):", lista_ordenada_descendente)
    print("El Máximo:", maximo)
    print("El Mínimo:", minimo)
    print("Longitud de la lista:", lista_longitud)
    
  • 1
    2
    3
    4
    5
    
    Lista ordenada: ['Audi', 'Ford', 'Honda', 'Mercedez', 'Susuki', 'Toyota']
    Lista ordenada (descendente): ['Toyota', 'Susuki', 'Mercedez', 'Honda', 'Ford', 'Audi']
    El Máximo: Toyota
    El Mínimo: Audi
    Longitud de la lista: 6
    

¿Qué es una Tupla?

Una tupla en Python es similar a una lista, pero con una diferencia clave: es inmutable, lo que significa que, una vez creada, no puedes modificar, agregar ni eliminar elementos. Esto las hace ideales para representar datos que no deben cambiar a lo largo de la ejecución del programa.

Características de las Tuplas

Ordenadas
Los elementos en una tupla siguen un orden específico.
Inmutables
Una vez que la tupla es creada, no puedes cambiar su contenido.
Permiten elementos duplicados
Al igual que las listas, las tuplas pueden tener elementos repetidos.
Pueden contener diferentes tipos de datos
Al igual que las listas, las tuplas pueden contener diferentes tipos de elementos.

Operaciones Comunes con Tuplas

Las operaciones sobre tuplas en Python son limitadas debido a que las tuplas son inmutables, es decir, no pueden modificarse después de ser creadas. Sin embargo, se pueden realizar varias operaciones comunes:

---
title: "Tuplas en Python"
---
graph LR;
    A[Operaciones Comunes] --> B[Acceso a elementos]
    A --> C[Concatenación]
    A --> D[Repetición]
    A --> E[Longitud]
    A --> F[Verificación de pertenencia]
    A --> G[Desempaquetado]
    
    B -- "Por índice" --> B1["mi_tupla[index]"]
    B -- "Por rango" --> B2["mi_tupla[inicio:final]"]
    
    C -- "Operador <code>+</code>" --> C1["tupla1 + tupla2"]
    
    D -- "Operador <code>*</code>" --> D1["tupla1 * 2"]
    
    E -- "Usar <code>len()</code>" --> E1["len(mi_tupla)"]
    
    F -- "Usar <code>in</code>" --> F1["elemento in mi_tupla"]
    
    G -- "En variables" --> G1["a,b,c = mi_tupla"]

    classDef wStroke fill:#fff,fill-opacity:0,text-align:left,stroke-width:0,background:#19191922,font-family:monospace,padding:3px,font-size:17px;
    class B1,B2,C1,D1,E1,F1,G1 wStroke;

Acceder a un Elemento:

Al igual que las listas, se puede acceder a los elementos de una tupla mediante su índice:

1
2
mi_tupla = (10, 20, 30, 40)
print(mi_tupla[2])  # Imprime 30

Concatenar y Repetir

Aunque no se puede modificar una tupla directamente, se puede concatenar tuplas o repetir tuplas para crear nuevas tuplas:

1
2
3
4
tupla1 = (1, 2, 3)
tupla2 = (4, 5, 6)
tupla3 = tupla1 + tupla2  # Concatenación
tupla4 = tupla1 * 2       # Repetición

Comprobar la Existencia de un Elemento

Podemos verificar si un elemento está presente en una tupla usando el operador in:

1
2
mi_tupla = (1, 2, 3, 4)
print(3 in mi_tupla)  # Imprime True

Diferencias entre Listas y Tuplas

A pesar de que las listas y las tuplas comparten muchas similitudes, hay diferencias clave que debemos tener en cuenta al decidir cúal usar:

CaracterísticaListasTuplas
MutabilidadMutable (se pueden modificar)Inmutable (no se pueden modificar)
SintaxisCorchetes []Paréntesis ()
VelocidadMás lentas debido a su mutabilidadMás rápidas debido a su inmutabilidad
UsoIdeal cuando los datos necesitan cambiarIdeal para datos constantes o clave-valor
MétodosMuchos métodos disponibles (append, remove, etc.)Pocos métodos disponibles (count, index)
Esta entrada está licenciada bajo CC BY 4.0 por el autor.