Pregunta 1¿Qué imprime este código?print(all([1, 2, 0, 3]))
Comprobaciones masivas con all() y any()
Aprende las funciones integradas all() y any() para comprobar si todos o al menos un elemento cumplen una condición.
all() — True solo cuando todos los elementos son True
all(iterable) devuelve True cuando todos los elementos de la lista, tupla o conjunto que pasas son True (o se evalúan como verdaderos), y False si al menos un elemento es False.
True si todos los elementos son True. False si algún elemento es False. True cuando se le pasa un iterable vacío.
Se aplican las mismas reglas de veracidad del artículo anterior: 0, las cadenas vacías y las listas vacías se tratan como False, así que una lista de números que contenga 0 hace que all() devuelva False.
# Una lista de bools: False si algún elemento es False
print(all([True, True, True])) # True
print(all([True, False, True])) # False
# Una lista de números: False si está el 0
print(all([1, 2, 3])) # True
print(all([1, 0, 3])) # False
# ¿Están todos los campos obligatorios del formulario rellenos?
form_values = ["Ana", "ana@example.com", "Calle Mayor 100, Madrid"]
if all(form_values):
print("Listo para enviar")
else:
print("Algunos campos están vacíos")
# Salida: Listo para enviar
any() — True si al menos un elemento es True
any(iterable) devuelve True si al menos un elemento es True, y False solo cuando todos los elementos son False. Donde all() es la comprobación estricta que exige unanimidad, any() es la comprobación indulgente que se conforma con una sola coincidencia.
| Función | Devuelve True cuando | Devuelve False cuando | En una lista vacía |
|---|---|---|---|
| all() | Todos los elementos son True | Al menos un elemento es False | True |
| any() | Al menos un elemento es True | Todos los elementos son False | False |
# Una lista de bools: True si al menos uno es True
print(any([False, False, True])) # True
print(any([False, False, False])) # False
# Reintentar si se levantó al menos una bandera de error
error_flags = [False, False, True, False]
if any(error_flags):
print("Es necesario reintentar")
else:
print("Todo correcto")
# Salida: Es necesario reintentar
Comportamiento ante una colección vacía
Cuando pasas una lista vacía, all([]) devuelve True y any([]) devuelve False. Es contraintuitivo, así que ten cuidado cuando los datos puedan tener legítimamente cero elementos.
print(all([])) # True <- no había "nada False" que encontrar, así que True
print(any([])) # False <- no había "nada True" que encontrar, así que False
# Ejemplo: un carrito sin artículos registrados todavía
cart = []
if all(cart):
print("Todos los artículos verificados") # se ejecuta incluso cuando el carrito tiene 0 artículos
# Esto puede no coincidir con tu intención, así que comprueba primero si está vacío
Decide de antemano cómo manejar las listas vacías
Cuando usas all() con el espíritu de «si todos los miembros cumplen la condición…», 0 miembros sigue devolviendo True. Para evitar pases prematuros no deseados, comprueba primero que la lista no esté vacía, como if members and all(...):.
Combina con condiciones para comprobar de forma masiva
all() / any() realmente brillan cuando se combinan con expresiones de comparación. Para comprobar «¿son todos mayores o iguales a 18?», construye una lista de resultados de >= 18 a partir de las edades y pásala — toda la comprobación cabe en una línea.
ages = [19, 20, 18, 25, 57]
# Construye primero una lista de bools y luego pásasela a all (la versión más fácil en 2 pasos)
checks = [age >= 18 for age in ages]
print(checks) # [True, True, True, True, True]
print(all(checks)) # True
# O escríbelo en línea (comprensiones de listas / expresiones generadoras — se cubre a continuación)
print(all(age >= 18 for age in ages)) # True
print(any(age >= 65 for age in ages)) # False
Cubriremos las comprensiones de listas como [age >= 18 for age in ages] en detalle en el capítulo de for. Por ahora, basta con captar la idea de «puedes evaluar una condición sobre una lista y pasar el resultado directamente a all() / any()».
En este artículo aprendimos all() y any() para comprobar el contenido de listas o tuplas de forma masiva.
all() exige que todos pasen, any() se conforma con al menos uno, y con una entrada vacía all es True mientras que any es False. En el siguiente artículo profundizaremos en el propio bucle for — el motor detrás de la expresión [... for ... in ...] que apareció discretamente aquí como una «lista de resultados».
Verificación de conocimientos
Responde cada pregunta una a una.
Pregunta 2¿Qué imprime este código?print(any([False, False, False]))
Pregunta 3Cuando se pasa una lista vacía [], ¿cuál combinación de valores de retorno de all([]) y any([]) es correcta?