Saltar al contenido principal
eLearner.app
Módulo 3 · Lección 1 de 49/36 en el curso~12 min
Lecciones del módulo (1/4)

Listas

Una lista es una secuencia ordenada y mutable de elementos. Es la estructura de datos más utilizada en Python: creas una con [] y la modificas con un conjunto de métodos que vale la pena memorizar.

Crear una lista

Python
vuota = []
numeri = [10, 20, 30]
mista = [1, "due", 3.0, True, None]    # tipos diferentes: legal pero raro

Acceso por índice y rebanado (slice)

Los índices comienzan en 0. Los índices negativos cuentan desde la derecha:

Python
parole = ["a", "b", "c", "d"]
parole[0]    # 'a'
parole[-1]   # 'd'   (último)
parole[1:3]  # ['b', 'c']   slice [start:stop]
parole[::-1] # ['d', 'c', 'b', 'a']   inverso

Un rebanado (slice) nunca lanza un IndexError: si está fuera de rango, devuelve una sublista vacía. El acceso directo como parole[10], por el contrario, lanza una excepción.

Modificar una lista

Python
nums = [1, 2, 3]
nums.append(4)         # [1, 2, 3, 4]    agrega al final
nums.insert(0, 0)      # [0, 1, 2, 3, 4] inserta en posición
nums.extend([5, 6])    # [0, 1, 2, 3, 4, 5, 6]   concatena
nums.pop()             # 6   extrae el último
nums.pop(0)            # 0   extrae el primero (más lento: O(n))
nums.remove(3)         # elimina la PRIMERA ocurrencia de 3
nums[1] = 99           # reemplaza por índice

Ordenación

Dos formas — es importante distinguirlas:

Python
nums = [3, 1, 4, 1, 5, 9, 2, 6]
nums.sort()          # MODIFICA nums in place, devuelve None
ordinati = sorted(nums)  # devuelve una NUEVA lista, deja nums intacta
nums.sort(reverse=True)
sorted(nums, key=lambda n: -n)   # ordenación por clave

Longitud, pertenencia, iteración

Python
len(nums)              # cuántos elementos
3 in nums              # True/False
for n in nums:
    print(n)

Copiar una lista

a = b no copia — solo crea un segundo nombre para la misma lista. Para copiar de verdad:

Python
copia = lista[:]            # slice completo
copia = list(lista)         # constructor explícito
copia = lista.copy()        # método

(Todas estas son copias superficiales (shallow copies) — los elementos anidados siguen compartiéndose.)

Copiar listas: cuidado con las referencias

En Python, cuando escribes list_b = list_a, no estás creando una copia: solo estás creando una segunda referencia. Modificar list_b también alterará list_a. Para crear una copia verdaderamente independiente, debes escribir list_b = list_a.copy() o usar el rebanado completo: list_b = list_a[:].

Pruébalo tú

Ejercicio#python.m3.l1.e1
Intentos: 0Cargando...

Dada la lista `nums = [5, 2, 8, 1, 9, 3]`, construye `first_three_sorted` con los primeros tres números de nums ordenados en orden ascendente. No modifiques nums.

Cargando editor...
Mostrar pista

nums[:3] son los tres primeros, luego sorted(...).

Solución disponible después de 3 intentos

Ejercicio de repaso

Ejercicio#python.m3.l1.e2
Intentos: 0Cargando...

Partiendo de `words = ['ciao']`, añade 'mondo' al final, luego inserta '!' al principio. Evalúa `words`.

Cargando editor...
Mostrar pista

append al final, insert(0, ...) al principio.

Solución disponible después de 3 intentos

Desafío adicional

Ejercicio#python.m3.l1.e3
Intentos: 0Cargando...

Dada la lista `items = [10, 20, 30, 40]`, usa el rebanado (slicing) para crear una nueva lista `reversed_items` que contenga los mismos elementos pero en orden inverso. Finalmente, evalúa `reversed_items`.

Cargando editor...
Mostrar pista

El rebanado con paso negativo es [::-1]. Asígnalo a reversed_items.

Solución disponible después de 3 intentos