En Python, una estructura de datos es una forma de organizar, gestionar y almacenar información para facilitar su acceso y modificación. Estas estructuras permiten trabajar con múltiples valores dentro de una misma variable, lo que resulta fundamental para el desarrollo de programas eficientes y estructurados.
Las estructuras de datos más comunes en Python son:
- Listas (
list
) - Tuplas (
tuple
) - Diccionarios (
dict
) - Conjuntos (
set
)
Estas estructuras permiten representar colecciones de datos, y aunque en otros lenguajes reciben nombres diferentes como arrays, vectores o matrices, en Python ofrecen una sintaxis más flexible y potentes funcionalidades integradas.
Listas:
Una lista es una colección ordenada y mutable de elementos. Las listas pueden contener elementos de cualquier tipo (números, cadenas, listas, objetos, etc.), e incluso mezclar tipos distintos dentro de una misma lista.
¿Cómo se crea una lista?
Existen varias formas de crear listas:
# Lista vacía
mi_lista = []
# Lista con elementos
numeros = [1, 2, 3, 4]
# Lista con distintos tipos de datos
mixta = [1, "hola", 3.14, True]
# Crear una lista a partir de un objeto iterable
letras = list("Python") # ['P', 'y', 't', 'h', 'o', 'n']
Propiedades de las listas:
- Ordenadas: mantienen el orden en que se agregan los elementos.
- Indexadas: se accede a sus elementos por índice (
[i]
). - Mutables: pueden modificarse después de ser creadas.
- Dinámicas: se pueden ampliar o reducir según se necesite.
- Anidables: pueden contener otras listas (listas de listas).
- Permiten múltiples tipos de datos.
Acceso y modificación de elementos:
Se accede a los elementos mediante índices que inician en 0. Por ejemplo:
colores = ["rojo", "verde", "azul"]
print(colores[0]) # rojo
print(colores[-1]) # azul (último elemento)
Modificar un elemento:
colores[1] = "amarillo"
print(colores) # ["rojo", "amarillo", "azul"]
Eliminar un elemento por índice:
del colores[0]
print(colores) # ["amarillo", "azul"]
Listas anidadas:
Es posible tener listas dentro de listas:
matriz = [[1, 2], [3, 4]]
print(matriz[1][0]) # 3
Slicing (rebanado de listas):
Permite obtener sublistas:
numeros = [10, 20, 30, 40, 50]
print(numeros[1:4]) # [20, 30, 40]
print(numeros[:3]) # [10, 20, 30]
print(numeros[-2:]) # [40, 50]
También podemos modificar varias posiciones a la vez:
numeros[1:3] = [25, 35]
print(numeros) # [10, 25, 35, 40, 50]
Operadores útiles con listas:
# Concatenar listas
a = [1, 2]
b = [3, 4]
print(a + b) # [1, 2, 3, 4]
# Repetir elementos
print(a * 2) # [1, 2, 1, 2]
# Asignación múltiple
x, y, z = [5, 6, 7]
print(x, y, z) # 5 6 7
Iterar sobre listas:
# Iteración simple
for elemento in numeros:
print(elemento)
# Iteración con índices
for i in range(len(numeros)):
print(f"Índice {i}: {numeros[i]}")
# Iterar con índice y valor
for i, valor in enumerate(numeros):
print(f"{i}: {valor}")
# Iterar dos listas a la vez
nombres = ["Ana", "Luis"]
edades = [20, 25]
for nombre, edad in zip(nombres, edades):
print(f"{nombre} tiene {edad} años")
Métodos de listas más utilizados:
Método | Descripción |
---|---|
append(x) | Agrega el elemento x al final de la lista. |
extend([x]) | Añade todos los elementos de una lista al final. |
insert(i, x) | Inserta x en la posición i. |
remove(x) | Elimina la primera aparición de x. |
pop([i]) | Elimina y devuelve el elemento en la posición i. Si no se indica i, elimina el último. |
reverse() | Invierte el orden de la lista. |
sort() | Ordena la lista de menor a mayor. |
index(x) | Devuelve el índice de la primera aparición de x. |
count(x) | Cuenta cuántas veces aparece x. |
clear() | Elimina todos los elementos de la lista. |
1. append():
Agrega un elemento al final de la lista.
frutas = ["manzana", "banana"]
frutas.append("naranja")
print(frutas) # ['manzana', 'banana', 'naranja']
2.extend():
Agrega los elementos de un iterable (como otra lista) al final de la lista original.
numeros = [1, 2]
numeros.extend([3, 4])
print(numeros) # [1, 2, 3, 4]
3. insert():
Inserta un elemento x en la posición i.
letras = ["a", "b", "d"]
letras.insert(2, "c")
print(letras) # ['a', 'b', 'c', 'd']
4. remove():
Elimina la primera aparición del elemento x.
colores = ["rojo", "verde", "azul", "verde"]
colores.remove("verde")
print(colores) # ['rojo', 'azul', 'verde']
5. pop():
Elimina y devuelve el elemento en la posición i. Si no se especifica, elimina el último.
nombres = ["Ana", "Luis", "Carlos"]
eliminado = nombres.pop(1)
print(eliminado) # Luis
print(nombres) # ['Ana', 'Carlos']
6. reverse():
Invierte el orden de los elementos de la lista.
numeros = [1, 2, 3]
numeros.reverse()
print(numeros) # [3, 2, 1]
7. sort():
Ordena la lista en orden ascendente por defecto. Se puede usar con parámetros para personalizar.
edades = [30, 25, 40, 20]
edades.sort()
print(edades) # [20, 25, 30, 40]
8. index():
Devuelve el índice de la primera aparición del elemento x.
vocales = ["a", "e", "i", "o", "u"]
print(vocales.index("o")) # 3
9. count():
Devuelve cuántas veces aparece el elemento x en la lista.
notas = [10, 9, 8, 10, 7, 10]
print(notas.count(10)) # 3
10. clear():
Elimina todos los elementos de la lista.
tareas = ["leer", "escribir", "repasar"]
tareas.clear()
print(tareas) # []
Buenas prácticas al trabajar con listas:
- Usar
append()
yextend()
en lugar de+
para mejorar el rendimiento. - Evitar modificar listas mientras se recorren.
- Si necesitas una copia de una lista, usa slicing:
nueva = original[:]
.