PyQuiz 19 – append vs extend en Python
El reto
a = [1, 2, 3]
a.append([4, 5])
print(len(a))
¿Cuál es el resultado?
- a) 4
- b) 5
- c) Error
Piensa tu respuesta antes de seguir leyendo…
Concepto: append vs extend
Los métodos append() y extend() sirven para añadir elementos a una lista, pero funcionan de manera muy distinta. append(elemento) añade el argumento como un único elemento al final, sin importar su tipo. Si le pasas una lista, esa lista se convierte en un elemento de la lista original.
extend(iterable), en cambio, recorre el iterable que le pasas y añade cada uno de sus elementos de forma individual. El efecto es equivalente a concatenar las dos listas.
Esta diferencia es crítica: lista.append([4, 5]) hace que la lista tenga un elemento extra que es otra lista, aumentando su longitud en 1. lista.extend([4, 5]) añade dos elementos enteros, aumentando la longitud en 2.
Paso a paso
a = [1, 2, 3]— se crea una lista con 3 elementos.len(a)es3.a.append([4, 5])— se añade el objeto[4, 5](una lista) como un único elemento al final. La listaapasa a ser[1, 2, 3, [4, 5]].print(len(a))— la lista tiene ahora 4 elementos:1,2,3y[4, 5]. Se imprime4.
📥 Llévate el cheatsheet de Python (gratis)
PDF de 6 páginas con lo esencial: tipos, condicionales, bucles, estructuras de datos, funciones y los errores que más vas a cometer. Para tener al lado mientras programas.
Sin spam. Te apuntas a la lista, descargas el cheatsheet y recibes contenido de Python cada semana.
Solución
Respuesta correcta: A) 4
append() agrega el argumento como UN solo elemento. La lista queda [1, 2, 3, [4, 5]], con 4 elementos. Con extend() sería 5.
Sabías que…
Puedes visualizar fácilmente la diferencia entre append y extend con este ejemplo:
# append: añade como un elemento único
a = [1, 2, 3]
a.append([4, 5])
print(a) # [1, 2, 3, [4, 5]]
print(len(a)) # 4
# extend: añade cada elemento del iterable
b = [1, 2, 3]
b.extend([4, 5])
print(b) # [1, 2, 3, 4, 5]
print(len(b)) # 5
# extend también acepta tuplas, sets, strings...
c = [1, 2]
c.extend('abc')
print(c) # [1, 2, 'a', 'b', 'c']
# Equivalencia con +=
d = [1, 2, 3]
d += [4, 5] # igual que extend
print(d) # [1, 2, 3, 4, 5]
Prueba tú mismo
Dado a = [1, 2, 3], ¿qué diferencia hay entre a.append((4, 5)) y a.extend((4, 5))? ¿Cuál es el len(a) en cada caso?
Más PyQuizzes en elpythonista.com/pyquizzes
Tutorial relacionado: Listas en Python
¿Quieres aprender Python en orden, no a saltos?
Esto que has leído es solo una pieza. En El Pythonista lo verás todo encadenado: 11 módulos, 37+ horas de vídeo, 734 actividades y un proyecto real (MovieTracker) que crece contigo desde la primera variable hasta el deploy a producción.
37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía
