Listas
Las listas son la estructura de datos más versátil de Python. Son colecciones ordenadas y modificables que te permiten guardar, acceder y transformar múltiples valores bajo un solo nombre. Son el paso previo a los DataFrames de pandas.
Concepto teórico
¿Qué es una lista?
Una lista es una colección ordenada y modificable (mutable) de elementos. Se
crea con corchetes [] y los elementos se separan por comas. Puede contener cualquier tipo de dato —
incluso mezclarlos, aunque no es recomendable en la práctica.
numeros = [10, 20, 30, 40, 50] # lista de ints nombres = ["García", "López", "Pérez"] # lista de strings mixta = [1, "hola", True, 3.14, None] # tipos mezclados (evitalo) vacia = [] # lista vacía anidada = [[1, 2], [3, 4], [5, 6]] # lista de listas
Índices: acceder a elementos
Cada elemento tiene una posición (índice) que empieza en 0, no en 1.
Esto es universal en programación y es lo que más confunde a los principiantes.
| Elemento | "García" |
"López" |
"Pérez" |
"Sosa" |
"Luna" |
|---|---|---|---|---|---|
| Índice positivo | 0 |
1 |
2 |
3 |
4 |
| Índice negativo | -5 |
-4 |
-3 |
-2 |
-1 |
Los índices negativos cuentan desde el final: -1 es el último elemento,
-2 el anteúltimo, etc. Son extremadamente útiles cuando querés acceder al final sin saber cuántos
elementos hay.
lista[10] en una lista de 5 elementos), Python da
IndexError: list index out of range. Siempre verificá con len(lista) antes de acceder
a índices variables.
Slicing: extraer sublistas
El slicing permite extraer una porción de la lista con la sintaxis
lista[inicio:fin:paso]:
inicio— índice donde empieza (incluido). Default:0fin— índice donde termina (excluido). Default: largo de la listapaso— de a cuántos elementos avanzar. Default:1
Ejemplos con nums = [10, 20, 30, 40, 50, 60, 70]:
| Slice | Resultado | Significado |
|---|---|---|
nums[1:4] |
[20, 30, 40] |
Del índice 1 al 3 (4 excluido) |
nums[:3] |
[10, 20, 30] |
Los primeros 3 |
nums[3:] |
[40, 50, 60, 70] |
Del índice 3 al final |
nums[-3:] |
[50, 60, 70] |
Los últimos 3 |
nums[::2] |
[10, 30, 50, 70] |
De a 2 (posiciones pares) |
nums[::-1] |
[70, 60, 50, 40, 30, 20, 10] |
Invertida |
Un dato importante: el slicing nunca da IndexError. Si pedís nums[100:200] en una
lista de 7 elementos, simplemente devuelve una lista vacía [].
Mutabilidad: las listas se pueden modificar
A diferencia de los strings (inmutables) y las tuplas (inmutables), las listas son mutables: podés agregar, eliminar, reordenar y modificar elementos después de crearlas. Esto es poderoso pero también peligroso — si dos partes de tu código referencian la misma lista, una modificación afecta a ambas.
Funciones útiles con listas
| Función | Qué hace | Ejemplo | Resultado |
|---|---|---|---|
len() |
Cantidad de elementos | len([1,2,3]) |
3 |
sum() |
Suma (solo números) | sum([10,20,30]) |
60 |
min() |
Valor mínimo | min([5,2,8]) |
2 |
max() |
Valor máximo | max([5,2,8]) |
8 |
sorted() |
Devuelve copia ordenada | sorted([3,1,2]) |
[1,2,3] |
list() |
Convierte a lista | list("hola") |
['h','o','l','a'] |
x in lista |
Verifica pertenencia | 3 in [1,2,3] |
True |
sorted() devuelve una NUEVA lista sin modificar la original.
lista.sort() modifica la lista in-place y devuelve None. Es una diferencia crucial que
genera bugs si no la entendés.
sum(), min(), max() que aprendés acá se trasladan directamente a pandas.
Dominá listas y pandas va a ser natural.
Ejemplos explicados paso a paso
Ejemplo 1: Crear, acceder y slicing
Las operaciones más comunes: crear una lista, acceder por índice y extraer porciones con slicing.
Hacé clic en ▶ Ejecutar
Ejemplo 2: Modificar listas — agregar, eliminar, cambiar
La mutabilidad de las listas te permite construir datasets dinámicamente.
Hacé clic en ▶ Ejecutar
Ejemplo 3: Funciones estadísticas con listas
Calculá estadísticas básicas de una cartera de clientes — esto es exactamente lo que harías con pandas, pero primero con listas puras.
Hacé clic en ▶ Ejecutar
Ejemplo 4: Recorrer listas con for
Combinar listas con bucles for es el patrón más común en procesamiento de datos.
Hacé clic en ▶ Ejecutar
Ejemplo 5: List comprehensions — la herramienta más poderosa
Las list comprehensions son la forma "pythónica" de crear listas transformadas. Reemplazan bucles for completos en una sola línea.
Hacé clic en ▶ Ejecutar
Referencia rápida
| Método | Qué hace | Modifica la lista? | Devuelve |
|---|---|---|---|
.append(x) |
Agrega x al final | Sí | None |
.insert(i, x) |
Inserta x en posición i | Sí | None |
.extend(lista) |
Agrega todos los elementos | Sí | None |
.remove(x) |
Elimina primera ocurrencia de x | Sí | None |
.pop(i) |
Elimina y devuelve elemento en i | Sí | El elemento |
.clear() |
Vacía la lista | Sí | None |
.sort() |
Ordena in-place | Sí | None |
.reverse() |
Invierte in-place | Sí | None |
.index(x) |
Posición de x | No | int |
.count(x) |
Cuántas veces aparece x | No | int |
.copy() |
Copia superficial | No | Nueva lista |
Ejercicios
Ejercicio 1: Crear y acceder
Creá una lista ciudades con 5 ciudades argentinas. Imprimí la primera, la última (con índice
negativo) y la cantidad de elementos. Debe incluir Buenos Aires.
Hacé clic en ▶ Ejecutar
Ejercicio 2: Slicing
Dada nums = [10, 20, 30, 40, 50, 60, 70, 80], extraé e imprimí: los primeros 3, los últimos 3, y
la lista invertida. Debe incluir [60, 70, 80].
Hacé clic en ▶ Ejecutar
Ejercicio 3: Sum, min, max, len
Dada ventas = [45000, 72000, 38000, 91000, 55000], imprimí: total, promedio, máximo y mínimo.
Debe incluir 301000 (el total).
Hacé clic en ▶ Ejecutar
Ejercicio 4: Append y extend
Empezá con cartera = [100000, 250000]. Agregá 180000 con append, después extendé
con [50000, 320000]. Imprimí la lista final y su longitud. Debe incluir la longitud
5.
Hacé clic en ▶ Ejecutar
Ejercicio 5: Ordenar y top N
Dada scores = [720, 590, 810, 645, 680, 750, 520], imprimí los 3 scores más altos (top 3) usando
sorted() con reverse=True y slicing. Debe incluir [810, 750, 720].
Hacé clic en ▶ Ejecutar
Ejercicio 6: List comprehension — filtrar
Dada montos = [12000, 3500, 45000, 800, 67000, 2100, 91000], creá una nueva lista
grandes con solo los montos > 10000 e imprimí su suma. Debe incluir 215000.
Hacé clic en ▶ Ejecutar
Ejercicio 7: List comprehension — transformar
Tenés precios_str = ["$2,500", "$1,800", "$4,200", "$950"]. Con una list comprehension, limpiá
el $ y la coma, convertí a float y calculá el total. Debe incluir 9450.
Hacé clic en ▶ Ejecutar
Ejercicio 8: Recorrer dos listas en paralelo
Tenés clientes = ["García", "López", "Pérez"] y saldos = [250000, 80000, 510000].
Recorrelos con zip() e imprimí un reporte. Debe incluir Total: 840000.
Hacé clic en ▶ Ejecutar
Ejercicio 9: Clasificar con comprehension y ternario
Dada edades = [15, 22, 17, 30, 12, 45, 16, 28], creá una lista que tenga "Mayor" o
"Menor" para cada edad. Contá cuántos son mayores. Debe incluir Mayores: 4.
Hacé clic en ▶ Ejecutar
Ejercicio 10: Análisis de cartera completo
Tenés clientes = ["García","López","Martínez","Pérez","Fernández"] y
saldos = [150000, 320000, 45000, 890000, 72000]. Imprimí: (1) cada cliente con su saldo y un
emoji 🟢 si > promedio, 🔴 si no, (2) el promedio, (3) los nombres de clientes sobre el promedio, (4) el Top
1. Debe incluir Promedio: 295400.
Hacé clic en ▶ Ejecutar
Resumen y conexión
- Las listas son colecciones ordenadas y mutables, creadas con
[]. - Los índices empiezan en
0. Los negativos (-1) cuentan desde el final. - Slicing (
[inicio:fin:paso]) extrae sublistas. Nunca da IndexError. - Métodos de modificación:
append,insert,extend,remove,pop,sort,reverse. - Funciones estadísticas:
len,sum,min,max,sorted. - List comprehensions (
[x for x in lista if cond]) son la herramienta más poderosa para transformar datos.
En la siguiente lección (09 · Tuplas) vas a aprender la versión inmutable de las listas: cuándo conviene usar tuplas en vez de listas, y por qué la inmutabilidad es importante en código profesional.
Recursos: Python docs — Lists · List Comprehensions