Listas en Python¶
1. ¿Qué es una lista?¶
En Python, una lista es un tipo de dato que nos permite almacenar una colección de elementos ordenados. A diferencia de las tuplas, las listas son mutables, es decir, podemos modificar sus elementos una vez que la lista ha sido creada. Las listas pueden contener cualquier tipo de dato, como números, cadenas de texto, o incluso otras listas.
Características principales de las listas:¶
- Son ordenadas, lo que significa que los elementos mantienen su orden de inserción.
- Son modificables: puedes cambiar sus elementos.
- Pueden contener tipos de datos mixtos, es decir, una lista puede tener números, cadenas, booleanos, etc.
- Permiten duplicados, por lo que pueden contener varios elementos con el mismo valor.
Ejemplo de una lista:¶
mi_lista = [10, 20, 30, 40, 50]
2. Creación de Listas¶
2.1 Sintaxis básica¶
Las listas en Python se crean encerrando los elementos entre corchetes [], y los elementos se separan por comas.
Ejemplo de lista con números:¶
numeros = [1, 2, 3, 4, 5]
Lista con diferentes tipos de datos:¶
Las listas pueden contener elementos de diferentes tipos de datos.
mi_lista_mixta = [1, "Python", True, 3.14]
Lista vacía:¶
Incluso puedes crear una lista vacía y luego agregarle elementos más tarde.
lista_vacia = []
Lista anidada:¶
Las listas también pueden contener otras listas dentro de ellas. Estas se llaman listas anidadas.
lista_anidada = [1, 2, [3, 4, 5]]
3. Acceso a los elementos de una lista¶
3.1 Índices y acceso¶
Puedes acceder a los elementos de una lista utilizando índices. Los índices en Python comienzan en 0. Además, Python permite el uso de índices negativos para acceder a los elementos desde el final de la lista.
Ejemplo:¶
mi_lista = [10, 20, 30, 40, 50]
print(mi_lista[0]) # Imprime: 10
print(mi_lista[-1]) # Imprime: 50 (último elemento)
Ejemplo de acceso a una lista anidada:
lista_anidada = [1, 2, [3, 4, 5]]
print(lista_anidada[2]) # Imprime: [3, 4, 5]
print(lista_anidada[2][1]) # Imprime: 4
Sublistas (Slicing):¶
Puedes obtener una sublista de una lista utilizando el slicing con la sintaxis lista[inicio:fin].
Ejemplo de slicing:¶
Este ejemplo extrae una sublista desde el índice 1 hasta el índice 3 (el índice 4 no se incluye):
mi_lista = [10, 20, 30, 40, 50]
sub_lista = mi_lista[1:4] # Extrae desde el índice 1 hasta el 3
print(sub_lista) # Imprime: [20, 30, 40]
4. Modificación de listas¶
4.1 Cambiar elementos en una lista¶
Puedes cambiar los elementos de una lista directamente utilizando su índice.
Ejemplo:¶
En este ejemplo, cambiamos el valor en el índice 2 de la lista:
mi_lista = [10, 20, 30, 40, 50]
mi_lista[2] = 35 # Cambia el valor en el índice 2
print(mi_lista) # Imprime: [10, 20, 35, 40, 50]
4.2 Añadir elementos a una lista¶
Existen varios métodos para agregar elementos a una lista.
append(): Añade un solo elemento al final de la lista.insert(): Inserta un elemento en una posición específica.
Ejemplo con append():¶
Este método añade un elemento al final de la lista, en este caso, añadimos 40:
mi_lista = [10, 20, 30]
mi_lista.append(40) # Añade 40 al final
print(mi_lista) # Imprime: [10, 20, 30, 40]
Ejemplo con insert():¶
Este método inserta un elemento en una posición específica. En este caso, insertamos 15 en el índice 1:
mi_lista = [10, 20, 30]
mi_lista.insert(1, 15) # Inserta 15 en el índice 1
print(mi_lista) # Imprime: [10, 15, 20, 30]
4.3 Eliminar elementos de una lista¶
Puedes eliminar elementos de una lista utilizando los métodos remove(), pop() o clear().
remove(): Elimina el primer elemento que coincida con el valor especificado.pop(): Elimina el elemento en el índice especificado y devuelve su valor.clear(): Elimina todos los elementos de la lista.
Ejemplo con remove():¶
En este ejemplo, eliminamos el primer 20 que encuentra en la lista:
mi_lista = [10, 20, 30, 20]
mi_lista.remove(20) # Elimina el primer 20 que encuentra
print(mi_lista) # Imprime: [10, 30, 20]
Ejemplo con pop():¶
En este ejemplo, eliminamos el elemento en el índice 1 (que es 20) y lo guardamos en la variable valor:
mi_lista = [10, 20, 30]
valor = mi_lista.pop(1) # Elimina el elemento en el índice 1 y lo guarda
print(mi_lista) # Imprime: [10, 30]
print(valor) # Imprime: 20 (el valor eliminado)
5. Métodos comunes para manipular listas¶
5.1 extend(): Combinar listas¶
El método extend() permite agregar todos los elementos de otra lista al final de la lista actual.
Ejemplo:¶
En este ejemplo, combinamos lista2 al final de lista1:
lista1 = [1, 2, 3]
lista2 = [4, 5, 6]
lista1.extend(lista2)
print(lista1) # Imprime: [1, 2, 3, 4, 5, 6]
5.2 sort() y reverse(): Ordenar y revertir listas¶
sort(): Ordena la lista en orden ascendente por defecto.reverse(): Invierte el orden de los elementos en la lista.
Ejemplo con sort():¶
mi_lista = [30, 10, 40, 20]
mi_lista.sort()
print(mi_lista) # Imprime: [10, 20, 30, 40]
Si queres ordenar en orden descendente, puedes usar el parámetro reverse=True:
mi_lista = [30, 10, 40, 20]
mi_lista.sort(reverse=True)
print(mi_lista) # Imprime: [40, 30, 20, 10]
Ejemplo con reverse():¶
En este ejemplo, simplemente invertimos el orden de los elementos en la lista:
mi_lista = [10, 20, 30, 40]
mi_lista.reverse()
print(mi_lista) # Imprime: [40, 30, 20, 10]
6. Operaciones con listas¶
6.1 Concatenación de listas¶
Puedes combinar dos listas utilizando el operador +.
Ejemplo:¶
El resultado es similar a usar extend(), pero crea una nueva lista en lugar de modificar la original:
lista1 = [1, 2, 3]
lista2 = [4, 5, 6]
resultado = lista1 + lista2
print(resultado) # Imprime: [1, 2, 3, 4, 5, 6]
6.2 Repetición de listas¶
Puedes multiplicar una lista utilizando el operador * para repetirla varias veces.
Ejemplo:¶
mi_lista = [1, 2, 3]
repetida = mi_lista * 3
print(repetida) # Imprime: [1, 2, 3, 1, 2, 3, 1, 2, 3]
6.3 Slicing (Corte de listas)¶
Puedes cortar una lista para obtener una sublista usando slicing.
Ejemplo:¶
mi_lista = [1, 2, 3, 4, 5]
sub_lista = mi_lista[1:4] # Extrae desde el índice 1 hasta el 3
print(sub_lista) # Imprime: [2, 3, 4]
7. Iterando sobre listas¶
7.1 Uso de bucles for para recorrer listas¶
Puedes recorrer una lista con un bucle for para realizar operaciones con cada elemento.
Ejemplo:¶
mi_lista = [10, 20, 30, 40]
for item in mi_lista:
print(item)
Este código imprimirá:
10
20
30
40
Podemos utilizar también while en los casos que necesitemos más control sobre el índice, por ejemplo si buscamos un valor en concreto y si aparece no queremos seguir iterando.
En este ejemplo, buscamos el valor 30 en la lista y detenemos el bucle cuando lo encontramos:
1 2 3 4 5 6 7 8 9 | |
7.2 Comprensión de listas¶
La comprensión de listas es una forma concisa de crear nuevas listas aplicando una expresión sobre una lista existente.
Ejemplo:¶
mi_lista = [1, 2, 3, 4]
nueva_lista = [x * 2 for x in mi_lista]
print(nueva_lista) # Imprime: [2, 4, 6, 8]
8 Ejercicios Prácticos Resueltos:¶
Ejercicio 1: Crear y modificar una lista¶
Ejercicio 1: Crear y modificar una lista
-
Descripción: Crea una lista de tus 5 películas favoritas y modifícala agregando otra película al final.
Solución
peliculas = ["Inception", "The Matrix", "Interstellar", "The Dark Knight", "Avatar"] peliculas.append("The Lord of the Rings") # Añadimos una nueva película print(peliculas) # Resultado: ['Inception', 'The Matrix', 'Interstellar', 'The Dark Knight', 'Avatar', 'The Lord of the Rings']
Ejercicio 2: Eliminar un elemento¶
Ejercicio 2: Eliminar un elemento
-
Descripción: Crea una lista con los números del 1 al 5 y elimina el número 3 usando el método
remove().Solución
numeros = [1, 2, 3, 4, 5] numeros.remove(3) # Elimina el número 3 print(numeros) # Resultado: [1, 2, 4, 5]
Ejercicio 3: Sumar todos los elementos¶
Ejercicio 3: Sumar todos los elementos
-
Descripción: Crea una lista con los números
[1, 2, 3, 4, 5]y calcula la suma de todos sus elementos utilizando un buclefor.Solución
numeros = [1, 2, 3, 4, 5] suma = 0 for numero in numeros: suma += numero print(suma) # Resultado: 15
Ejercicio 4: Combinación de listas¶
Ejercicio 4: Combinación de listas
-
Descripción: Crea dos listas de números y combínelas en una sola lista utilizando
extend().Solución
lista1 = [1, 2, 3] lista2 = [4, 5, 6] lista1.extend(lista2) # Combina lista2 en lista1 print(lista1) # Resultado: [1, 2, 3, 4, 5, 6]
9. Ejericios para practicar¶
Ejercicio 1: Crear una lista de números aleatorios¶
Ejercicio 1: Crear una lista de números aleatorios
- Descripción: Crea una lista de
nnúmeros aleatorios entre 1 y 100. Utilizando un buclefor, calcula la suma y la media de los elementos de la lista. Para generar números aleatorios, puedes usar el módulorandomde Python. Utiliza la funciónrandom.randint(1, 100)para obtener los números aleatorios.
Ejercicio 2: Lista de frutas¶
Ejercicio 2: Lista de frutas
- Descripción: Pide al usuario que te nombre varias frutas y las vayas añadiendo a una lista. Cuando el usuario escriba "fin", el programa deberá mostrar la lista de frutas ordenada alfabéticamente. Recuerda que puedes utilizar el método
sort()para ordenar la lista de forma ascendente.
Ejercicio 3: Buscar un número en una lista¶
Ejercicio 3: Buscar un número en una lista
- Descripción: Crea una lista con 10 números aleatorios entre 1 y 50. Luego, pide al usuario un número e indica si dicho número está presente en la lista o no. Si el número se encuentra, muestra el índice donde se encuentra.
Ejemplo de código para generar números aleatorios:
import random
numero_aleatorio = random.randint(1, 100)
print(numero_aleatorio)
Ejercicio 4: Lista de números primos¶
Ejercicio 4: Lista de números primos
- Descripción: Crea una lista con los primeros
nnúmeros primos. Un número primo es un número mayor que 1 que solo puede ser dividido por 1 y por sí mismo. Pide al usuario cuántos números primos desea en la lista y genera esa cantidad de números primos utilizando un buclewhile.
Ejercicio 5: Contar la frecuencia de un elemento¶
Ejercicio 5: Contar la frecuencia de un elemento
- Descripción: Crea una lista con elementos repetidos. Luego, pide al usuario un valor de la lista y cuenta cuántas veces aparece ese valor en la lista. Puedes utilizar el método
count()de la lista para resolverlo.
Ejercicio 6: Filtrar números mayores a un valor¶
Ejercicio 6: Filtrar números mayores a un valor
- Descripción: Crea una lista con 20 números aleatorios entre 1 y 100. Pide al usuario un valor y, utilizando un bucle, crea una nueva lista que contenga solo los números de la lista original que sean mayores al valor proporcionado por el usuario.
Ejercicio 7: Generar una lista de cuadrados¶
Ejercicio 7: Generar una lista de cuadrados
- Descripción: Crea una lista con los primeros
nnúmeros naturales. Luego, utiliza un bucleforpara crear una nueva lista que contenga los cuadrados de esos números. La fórmula para obtener el cuadrado de un número es:n**2.
Ejercicio 8: Lista de números negativos y positivos¶
Ejercicio 8: Lista de números negativos y positivos
- Descripción: Crea una lista con 10 números aleatorios entre -50 y 50. Luego, separa los números positivos y negativos en dos listas diferentes. Imprime ambas listas por separado, mostrando los números positivos y negativos.
Ejercicio 9: Remover elementos duplicados¶
Ejercicio 9: Remover elementos duplicados
- Descripción: Crea una lista con algunos números repetidos. Utilizando un bucle, elimina los elementos duplicados de la lista (sin utilizar el método
set()). Al final, muestra la lista sin duplicados.
Ejercicio 10: Comprobar si la lista está vacía¶
Ejercicio 10: Comprobar si la lista está vacía
- Descripción: Crea una lista vacía y, utilizando una estructura condicional, comprueba si la lista está vacía o no. Si está vacía, imprime "La lista está vacía", de lo contrario, imprime "La lista no está vacía".
10. Resumen¶
En esta lección, hemos aprendido a trabajar con listas en Python, incluyendo cómo crear, modificar, acceder a los elementos de una lista y utilizar los **mét
11. Soluciones a los ejercicios prácticos¶
Soluciones
-
- Descripción: Crea una lista de
nnúmeros aleatorios entre 1 y 100. Utilizando un buclefor, calcula la suma y la media de los elementos de la lista. Para generar números aleatorios, puedes usar el módulorandomde Python. Utiliza la funciónrandom.randint(1, 100)para obtener los números aleatorios.
Crear una lista de números aleatorios
1 2 3 4 5 6 7 8 9 10
import random n = 10 # Cambiar por la cantidad deseada numeros = [random.randint(1, 100) for _ in range(n)] suma = sum(numeros) media = suma / len(numeros) print(f"Números generados: {numeros}") print(f"Suma: {suma}") print(f"Media: {media}") - Descripción: Crea una lista de
-
Lista de frutas
- Descripción: Pide al usuario que te nombre varias frutas y las vayas añadiendo a una lista. Cuando el usuario escriba "fin", el programa deberá mostrar la lista de frutas ordenada alfabéticamente. Recuerda que puedes utilizar el método
sort()para ordenar la lista de forma ascendente.
1 2 3 4 5 6 7 8 9
frutas = [] while True: fruta = input("Introduce una fruta (o escribe 'fin' para terminar): ") if fruta.lower() == 'fin': break frutas.append(fruta) frutas.sort() print("Frutas ordenadas:", frutas) - Descripción: Pide al usuario que te nombre varias frutas y las vayas añadiendo a una lista. Cuando el usuario escriba "fin", el programa deberá mostrar la lista de frutas ordenada alfabéticamente. Recuerda que puedes utilizar el método
-
Buscar un número en una lista
- Descripción: Crea una lista con 10 números aleatorios entre 1 y 50. Luego, pide al usuario un número e indica si dicho número está presente en la lista o no. Si el número se encuentra, muestra el índice donde se encuentra.
1 2 3 4 5 6 7 8 9 10
import random numeros = [random.randint(1, 50) for _ in range(10)] print("Lista de números:", numeros) numero_usuario = int(input("Introduce un número para buscar en la lista: ")) if numero_usuario in numeros: print(f"El número {numero_usuario} está en el índice {numeros.index(numero_usuario)}.") else: print(f"El número {numero_usuario} no se encuentra en la lista.") -
Lista de números primos
- Descripción: Crea una lista con los primeros
nnúmeros primos. Un número primo es un número mayor que 1 que solo puede ser dividido por 1 y por sí mismo. Pide al usuario cuántos números primos desea en la lista y genera esa cantidad de números primos utilizando un buclewhile.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
def es_primo(num): if num <= 1: return False for i in range(2, int(num ** 0.5) + 1): if num % i == 0: return False return True n = int(input("¿Cuántos números primos deseas generar? ")) primos = [] num = 2 while len(primos) < n: if es_primo(num): primos.append(num) num += 1 print("Números primos:", primos) - Descripción: Crea una lista con los primeros
-
Contar la frecuencia de un elemento
- Descripción: Crea una lista con elementos repetidos. Luego, pide al usuario un valor de la lista y cuenta cuántas veces aparece ese valor en la lista. Puedes utilizar el método
count()de la lista para resolverlo.
1 2 3 4
lista = [1, 2, 3, 4, 3, 5, 3, 6] numero_usuario = int(input("Introduce un número para contar sus ocurrencias: ")) print(f"El número {numero_usuario} aparece {lista.count(numero_usuario)} veces en la lista.") - Descripción: Crea una lista con elementos repetidos. Luego, pide al usuario un valor de la lista y cuenta cuántas veces aparece ese valor en la lista. Puedes utilizar el método
-
Filtrar números mayores a un valor
- Descripción: Crea una lista con 20 números aleatorios entre 1 y 100. Pide al usuario un valor y, utilizando un bucle, crea una nueva lista que contenga solo los números de la lista original que sean mayores al valor proporcionado por el usuario.
1 2 3 4 5 6 7 8
import random lista = [random.randint(1, 100) for _ in range(20)] print("Lista original:", lista) valor = int(input("Introduce un valor para filtrar los números mayores: ")) filtrados = [num for num in lista if num > valor] print("Lista de números mayores:", filtrados) -
Generar una lista de cuadrados
- Descripción: Crea una lista con los primeros
nnúmeros naturales. Luego, utiliza un bucleforpara crear una nueva lista que contenga los cuadrados de esos números. La fórmula para obtener el cuadrado de un número es:n**2.
1 2 3 4 5 6
n = int(input("¿Cuántos números naturales deseas? ")) naturales = list(range(1, n+1)) cuadrados = [num**2 for num in naturales] print("Números naturales:", naturales) print("Cuadrados:", cuadrados) - Descripción: Crea una lista con los primeros
-
Lista de números negativos y positivos
- Descripción: Crea una lista con 10 números aleatorios entre -50 y 50. Luego, separa los números positivos y negativos en dos listas diferentes. Imprime ambas listas por separado, mostrando los números positivos y negativos.
1 2 3 4 5 6 7 8 9
import random lista = [random.randint(-50, 50) for _ in range(10)] positivos = [num for num in lista if num > 0] negativos = [num for num in lista if num < 0] print("Lista original:", lista) print("Números positivos:", positivos) print("Números negativos:", negativos) -
Remover elementos duplicados
- Descripción: El alumno deberá crear una lista con algunos números repetidos. Luego, utilizando un bucle, debe eliminar los elementos duplicados de la lista (sin utilizar el método
set()). Al final, debe mostrar la lista sin duplicados.
1 2 3 4 5 6 7 8
lista = [1, 2, 3, 2, 4, 5, 3] lista_sin_duplicados = [] for num in lista: if num not in lista_sin_duplicados: lista_sin_duplicados.append(num) print("Lista sin duplicados:", lista_sin_duplicados) - Descripción: El alumno deberá crear una lista con algunos números repetidos. Luego, utilizando un bucle, debe eliminar los elementos duplicados de la lista (sin utilizar el método
-
Comprobar si la lista está vacía
- Descripción: Crea una lista vacía y, utilizando una estructura condicional, comprueba si la lista está vacía o no. Si está vacía, imprime "La lista está vacía", de lo contrario, imprime "La lista no está vacía".
1 2 3 4 5 6
lista = [] if not lista: print("La lista está vacía.") else: print("La lista no está vacía.")