Tiza Las materias del CBC
Practicar →

Pensamiento Computacional (090) · Unidad 4 — Estructuras de datos

Listas

Una lista guarda varios valores en orden, bajo un solo nombre. A diferencia de un string, se puede modificar.

Practicar este tema →7 ejercicios que te corrigen paso a paso · gratis, sin cuenta

La explicación

Varios valores, un nombre

notas = [7, 4, 9, 6]

notas[0]   → 7       notas[-1]  → 6
len(notas)  → 4       notas[1:3]  → [4, 9]

Se indexa igual que un string: desde 0, con negativos desde el final, y con rebanadas que no incluyen el límite derecho. Todo lo que aprendiste de strings sirve acá.

Una lista puede mezclar tipos — [1, "hola", True] es válida — aunque en la práctica casi siempre guardan cosas del mismo tipo.

La diferencia con un string: se puede modificar

notas[0] = 10     # esto funciona
"hola"[0] = "H"   # esto da error

Las listas son mutables. Eso abre posibilidades y también trae el problema del tema 4.2.

Agregar y sacar

notas.append(8)     agrega al final
notas.insert(0, 5)   inserta en una posición
notas.remove(4)     saca la primera aparición del valor 4
notas.pop()         saca el último y lo devuelve
notas.pop(0)        saca el de la posición 0
remove borra por valor, pop por posición. Con [10, 20, 30], remove(0) tira error porque no hay ningún 0 en la lista, mientras que pop(0) saca el 10. Confundirlos es muy común.

Preguntar y contar

3 in [1, 2, 3]     → True
sum([1, 2, 3])     → 6
max([4, 9, 2])     → 9
min([4, 9, 2])     → 2
len([4, 9, 2])     → 3

Con sum y len el promedio sale en una línea: sum(notas) / len(notas).

Armar una lista desde cero

El patrón más usado: empezar vacía y llenarla en un ciclo.

cuadrados = []                # afuera
for n in range(1, 5):
    cuadrados.append(n * n)
print(cuadrados)           # [1, 4, 9, 16]

Es el mismo esquema del acumulador, pero juntando valores en vez de sumarlos. Y con la misma trampa: la lista vacía va afuera del ciclo.

Ejemplo resuelto

Escribir una función que reciba una lista de notas y devuelva cuántas están aprobadas (7 o más).

El patrón es contar: un contador afuera, y adentro del ciclo se suma 1 cuando se cumple la condición.

def cuantas_aprobadas(notas):
    cuenta = 0
    for n in notas:
        if n >= 7:
            cuenta = cuenta + 1
    return cuenta

Con [7, 4, 9, 6]: el 7 cuenta, el 4 no, el 9 sí, el 6 no. Devuelve 2.

Fijate que recorrimos for n in notas y no for i in range(len(notas)). Como sólo necesitamos los valores y no las posiciones, la primera forma es más corta y más clara. Reservá la del range para cuando de verdad necesites el índice.

Control: probá con la lista vacía []. Tiene que devolver 0, no tirar error. El ciclo simplemente no da ninguna vuelta y devuelve el contador como estaba. Las funciones que reciben listas siempre hay que probarlas con la lista vacía.

Dónde se cae la mayoría

Hasta acá la explicación. La práctica es la otra mitad: 7 ejercicios de este tema, en cuatro niveles, que no te dicen sólo si está bien al final sino que te corrigen en cada paso y te explican por qué. Además trae una animación que muestra la idea en movimiento.

Practicar Listas →

Ver todos los temas de Pensamiento Computacional