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
vuota = []
numeri = [10, 20, 30]
mista = [1, "due", 3.0, True, None] # tipos diferentes: legal pero raroAcceso por índice y rebanado (slice)
Los índices comienzan en 0. Los índices negativos cuentan desde la derecha:
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'] inversoUn 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
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 índiceOrdenación
Dos formas — es importante distinguirlas:
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 claveLongitud, pertenencia, iteración
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:
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ú
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.
Mostrar pista
nums[:3] son los tres primeros, luego sorted(...).
Solución disponible después de 3 intentos
Ejercicio de repaso
Partiendo de `words = ['ciao']`, añade 'mondo' al final, luego inserta '!' al principio. Evalúa `words`.
Mostrar pista
append al final, insert(0, ...) al principio.
Solución disponible después de 3 intentos
Desafío adicional
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`.
Mostrar pista
El rebanado con paso negativo es [::-1]. Asígnalo a reversed_items.
Solución disponible después de 3 intentos