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
- Acceder a los valores de una lista/tupla
- Verificar si un item existe
- Número de elementos en listas / tuplas.
- Desempaquetar los valores de una lista/tupla
- Combinar listas / tuplas
- Convertir una tupla en lista y viceversa
- Iterar sobre listas / tuplas
- Métodos comunes a listas/tuplas
- Métodos para manipular elementos de las listas
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.
- Si se omite el valor inicial, por defecto se toma 0.
- Si se omite el valor final, se accede hasta el último elemento de la lista / tupla
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étodo | Operación | Ejemplo |
|---|---|---|
| count() | Devuelve el número de veces que aparece un valor en una lista/tupla |
print(ensalada.count('🍅')) |
| index() | Regresa la posición del primer elemento coincidente en la lista/tupla | print(ensalada.index('🌽')) |
Métodos para manipular elementos de las listas
ensalada = ['🍅', '🍄', '🥦', '🥒', '🌽', '🥕', '🥑']
| Método | Operación | Ejemplo |
|---|---|---|
| append() | Agrega un elemento al final de la lista |
ensalada.append('🧅') |
| clear() | Elimina todos los elementos de la lista. | ensalada.clear() |
| copy() | Realiza una copia de la lista. |
fruits = ['🍉', '🍋', '🍇'] |
| extend() | Agrega los elementos de una lista al final de otra. |
frutas = ['🍉', '🍋', '🍇'] |
| insert() | Agrega un elemento en una posición específica de una lista |
ensalada.insert(3, '🫒') |
| pop() | Elimina un elemento en una posición específica. |
frutas = ['🍉', '🍋', '🍇'] |
| remove() | Elimina un elemento con un valor específico. |
frutas = ['🍉', '🍋', '🍇'] |
| reverse() | Ordena los elementos de la lista de la z-a |
alumnos = ['José', 'María', 'Jesús'] |
| sort() | Ordena los elementos de la lista de la a-z |
alumnos = ['José', 'María', 'Jesús'] |