Logo Python Fundamentos de la programación (Python)

[M5] Listas y Tuplas

Python cuenta con cuatro tipos de variable objeto que se utilizan para almacenar colecciones de datos. Estos son: listas, tuplas, conjuntos (sets) y diccionarios todos con diferentes usos y características.

En este tema se tocarán las listas y las tuplas. Ambas se usan para guardar colecciones de elementos generalmente de naturaleza similar (aunque podrían ser diferentes, no es lo usual) y que están relacionados unos con otros de alguna manera.

La diferencia entre las listas y las tuplas es que las listas son estructuras mutables (es decir podemos modificar sus elementos, agregar y borrar) mientras que las tuplas son una secuencia de datos inmutables, es decir una vez ha sido creada no puede cambiar. Los elementos de la secuencia van separados por comas.

Ambas (listas y tuplas) están indexadas y permiten valores duplicados.

Contenido


Crear listas / tuplas

Para crear una lista se escribe su nombre seguido del signo = y los elementos que la contienen entre corchetes [].
Ejemplo:

ensalada = ['🍅', '🍄', '🥦', '🥒', '🌽', '🥕', '🥑']
alumnos = ['José', 'María', 'Jesús']

Para crear una tupla se escribe su nombre seguido del signo = y los elementos que la contienen entre paréntesis ().
Ejemplo:

estaciones = ('🌷', '🌞', '🍂', '❄')
vocales = ('a','e','i','o','u')

Creamos una lista cuando sus elementos pueden cambiar.
En el ejemplo anterior, los ingredientes de una ensalada pueden variar.

Creamos una tupla cuando nos referimos a colecciones cuyos no cambian:
estaciones del año, meses, días de la semana, fases de la luna, signos del zodíaco...

Podemos mostrar todos los elementos de una lista con la instrucción print. Ejemplo:

print(estaciones)

>> ('🌷', '🌞', '🍂', '❄')

Acceder a los valores de una lista / tupla

Python, (y en general todos los lenguajes de programación) comienzan a indexar los elementos iterables con el número cero. Así...

estaciones🌷🌞🍂
índice o posición 0 1 2 3

Para acceder a los elementos de una lista / tupla se indica el número de índice deseado entre corchetes:

print(estaciones[1])
>> 🌞

Indices negativos

También se pueden acceder los elementos de una lista / tupla comenzando desde el final.
En este caso se usarán índices negativos, donde -1 se refiere al último elemento, -2 se refiere al penúltimo elemento, etc.

estaciones🌷🌞🍂
índice o posición 0 1 2 3
índice negativo-4-3-2-1

print(estaciones[-3])
>> 🌞

Rango de índices

Se puede acceder a un subconjunto de una lista / tupla si se especifica un rango de índices entre corchetes, indicando el valor inicial del elemento y el valor final -1 del elemento separados por dos puntos. Ejemplo: [1:3] accede a los elementos 1 y 2 de la lista/tupla especificada.

También se pueden indicar índices negativos si desea acceder desde el final de la lista.

ensalada = ['🍅', '🍄', '🥦', '🥒', '🌽', '🥕', '🥑']

print(ensalada[2:5])
>> '🥦', '🥒', '🌽'

print(ensalada[:4])
>> '🍅', '🍄', '🥦'

print(ensalada[5:])
>>'🌽', '🥕', '🥑'

print(ensalada[-4:-1])
>>'🌽', '🥕', '🥑'

Verificar si un item existe

Para determinar si un elemento específico está presente en una lista, se usa la palabra clave in. Asimismo, para saber si un valor no está en una lista se utilizan los operadores not in.

estaciones = ('🌷', '🌞', '🍂', '❄')
if '🌞' in estaciones:
    print('El 🌞 se encuentra en la tupla de estaciones')

Número de elementos en listas / tuplas.

Para determinar cuántos elementos tiene una tupla, se usa la función len()

print(len(estaciones))
>> 4
print(len(ensalada))
>> 7

Desestructurar los valores de una lista / tupla

En Python es posible extraer los valores de una lista o tupla en variables. A este proceso se llama destructuración. Ejemplo:

estaciones = ('🌷', '🌞', '🍂', '❄')
primavera, verano, otonho, invierno = estaciones
print(primavera)
>> 🌷
print(verano)
>> 🌞
print(otonho)
>> 🍂
print(invierno)
>> ❄

Combinar tuplas

Para unir dos o más tuplas se puede usar el operador +. Ejemplo

laborables = ('lunes','martes','miércoles','jueves','viernes')
festivos = ('sábado','domingo')
semana = laborables + festivos
print(semana)
 >> ('lunes','martes','miércoles','jueves','viernes','sábado','domingo')

Convertir una tupla en lista y viceversa

Para convertir una variable de lista en tupla y viceversa, se usan las funciones list y tuple, respectivamente. Ejemplo:

frutas = ('🍉', '🍋', '🍇')
fruits = list(frutas)
fruits[2] = '🍑'
frutas = tuple(fruits)
print(frutas)
 >>('🍉', '🍋', '🍑')

Iterar sobre (recorrer) listas / tuplas

El bucle for se utiliza para recorrer los elementos de un objeto iterable (lista, tupla, conjunto, diccionario, e incluso las letras de un string) y ejecutar un bloque de código para cada elemento del mismo. Su sintaxis es la siguiente:

for <elemento> in <objeto>:
    <código Python>

La variable elemento va tomando en cada vuelta de la iteración el valor correspondiente a un único elemento del objeto, sobre el cuál se pueden aplicar una serie de operaciones. Ejemplo:

frutas = ['🍉', '🍋', '🍇']
for fruta in frutas:
    print(fruta)
    if fruta == '🍋':
        print('Me encanta el limón')

Métodos comunes a listas/tuplas y strings

En el caso de los string se debe tomar que los elementos de un string son sus caracteres.

ensalada = ['🍅', '🍄', '🥦', '🥒', '🌽', '🥕', '🥑']

MétodoOperaciónEjemplo
count() Devuelve el número de veces que aparece un valor en una lista/tupla print(ensalada.count('🍅'))
>>1
palabra = 'ejemplo'
print(palabra.count('e'))
>>2
index() Regresa la posición del primer elemento coincidente en la lista/tupla print(ensalada.index('🌽'))
>>4

Métodos para manipular elementos de las listas

ensalada = ['🍅', '🍄', '🥦', '🥒', '🌽', '🥕', '🥑']

MétodoOperaciónEjemplo
append() Agrega un elemento al final de la lista ensalada.append('🧅')
print(ensalada)
>> ['🍅', '🍄', '🥦', '🥒', '🌽', '🥕', '🥑', '🧅']
clear() Elimina todos los elementos de la lista. ensalada.clear()
copy() Realiza una copia de la lista. fruits = ['🍉', '🍋', '🍇']
frutas = fruits.copy()
print(frutas)
>> ['🍉', '🍋', '🍇']
extend() Agrega los elementos de una lista
al final de otra.
frutas = ['🍉', '🍋', '🍇']
ensalada.extends(frutas)
print(ensalada)
>> ['🍅', '🍄', '🥦', '🥒', '🌽', '🥕', '🥑', '🍉', '🍋', '🍇']
insert() Agrega un elemento en una posición
específica de una lista
ensalada.insert(3, '🫒')
print(ensalada)
>> ['🍅', '🍄', '🥦', '🫒', '🥒', '🌽', '🥕', '🥑']
pop() Elimina un elemento en una posición específica. frutas = ['🍉', '🍋', '🍇']
frutas.pop(1)
print(frutas)
>> ['🍉', '🍇']
remove() Elimina un elemento con un valor específico. frutas = ['🍉', '🍋', '🍇']
frutas.remove('🍉')
print(frutas)
>> ['🍋', '🍇']
reverse() Ordena los elementos de la lista
de la z-a
alumnos = ['José', 'María', 'Jesús']
alumnos.reverse()
print(alumnos)
>> ['María', 'José', 'Jesús']
sort() Ordena los elementos de la lista
de la a-z
alumnos = ['José', 'María', 'Jesús']
alumnos.sort()
print(alumnos)
>> ['Jesús', 'José', 'María']