Artículo original escrito por Bala Priya C
Artículo original Python any() and all() Functions – Explained with Examples
Traducido y adaptado por Franciscomelov
Al programar en Python, ¿alguna vez has tenido que revisar si algún valor o todos los valores de un iterable tienen un valor True
(Verdadero)?. La siguiente vez que tengas que hacerlo recuerda usar las funciones any()
y all()
.
En este tutorial, aprenderemos acerca de las funciones any()
y all()
, también entenderemos su funcionamiento con ejemplos sencillos.
Tipo de dato booleano en Python
Antes de empezar con any()
y all()
repasemos los tipos de datos booleanos en Python. En Python puedes ver el valor booleano de cualquier objeto con la función bool()
.
#False -> Falso
# El valor booleano de None es False
print(bool(None))
# Salida
False
# El valor booleano de una cadena de texto vacia ("") es False
print(bool(""))
# salida
False
# El valor booleano de una lista vacía (o cualquier iterable vacío) es False
print(bool([]))
# Salida
False
# el valor booleano de 0 {int(0), float (0.0) y complex (0j)} es False
print(bool(0))
# Salida
False
Como vemos en el código anterior:
None
tiene un valor booleano deFalse
, (Falso)- El número cero(
0
) – entero, punto flotante (decimal) y representaciones de números complejos de0
– todos tienen un valor booleanoFalse
, y - Todos los iterables vacíos como listas, tuplas y cadenas de texto tienen un valor booleano
False
.
Una vez entendido lo anterior podemos deducir que los valores distintos de cero e iterables no vacíos tienen un valor booleano True
.
Como usar la función any() en Python
primero veamos la sintaxis básica de la función any()
con ejemplos sencillos.
? Sintaxis: any(iterable)
- Devuelve
True
sibool(x)
esTrue
en cualquiera de los elementos dex
del iterable. - Devuelve
False
si el iterable está vacío o si el valor booleano de "todos" los elementos del iterable sonFalse
.
En resumen, la función any()
toma un iterable como argumento y retorna True
si por lo menos uno de los elementos del iterable es True
Aquí puedes ver algunos ejemplos para entender mejor la función any()
:
lista_1 = [0,0,0,1,0,0,0,0]
# any(Una lista con por lo menos un valor distinto de cero) Devuelve True
print(any(lista_1))
# Salida
True
lista_2 = [0j, 0, 0, 0.0, 0, 0, 0.0, 0]
# any(Una lista de ceros) Devuelve False
print(any(lista_2))
# Salida
False
lists_3 = [True, False, False]
# any(Una lista con por lo menos un valor True) Deveulve True
print(any(lista_3))
# Salida
True
lista_4 = ["", "", "amo programar"]
# any(Una lista con por lo menos una cadena de texto no vacia ) Devuelve True
print(any(lista_4))
# Salida
True
lista_5 = ["", "", ""]
# any(Una lista de cadenas de texto vacias) Devuelve False
print(any(lista_5))
# Salida
False
Como saber si hay números en una cadena de caracteres con la función any() en Python
Ahora usaremos la función any()
para leer una cadena de caracteres y saber si hay números o no.
Estos son los pasos a seguir para saber si hay números en una cadena de caracteres:
- Iterar la cadena de caracteres para acceder a cada carácter (cada letra).
- Comprobar si un carácter es un dígito llamando al método
isdigit()
isdigit()
devolveráTrue
si el carácter en turno es un dígito de lo contrario retornaráFalse
El método isdigit()
se puede traducir como -> es dígito.
La comprensión de listas puede ser muy útil para obtener los valores booleanos de una lista.
Aquí hay pequeña explicación de comprensión de listas:
# Comprension de listas
[expresion_a_retornar por cada_elemento en un_iterable]
con las palabras clave for/in que lleva originalmente:
[expresion_a_retornar for cada_elemento in un_iterable]
|
|
V
resultado de hacerle algo a cada elemento de un iterable
# En resumen
# Iterar un interable, hacer algo a cada elemento y retornar el resultado de la operacion.
# Ejemplo de comprension de listas para multiplicar por 2 cada elemento de una lista
mi_lista = [1, 2, 3, 4, 5]
doble = [x * 2 for x in mi_lista]
# [2, 4, 6, 8, 10]
Como podemos ver en el código siguiente, tenemos una variable, mi_cadena
, con una cadena de caracteres programar**es**divertido**345
.
Así que, llamar a la función any()
, debería retornar True
.
Haciendo uso de compresión de listas para obtener una lista de valores True
y False
dependiendo de si el carácter es un dígito o no.
my_cadena = "programar**es**divertido**345"
buscando_digitos = [caracter.isdigit() for caracter in my_cadena]
print(any(buscando_digitos))
# Salida
True
# Puedes intentar:
# print(buscando_digitos)
# para ver los valores que retorna isdigit() cuando hay y cuando no hay un numero.
Al imprimir la lista buscando_numeros
podrás notar que tiene la misma cantidad de elementos que la variable mi_cadena
Por cada carácter de la cadena de caracteres hay un valor booleano - True
si el carácter es un dígito y False
si el carácter no es un dígito. Esto también lo podemos ver en el siguiente ejemplo.
print(buscando_digitos)
# Output
[False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True]
Como usar la función any() en Python para saber si hay letras en una cadena de caracteres
En el siguiente ejemplo, queremos saber si en una cadena de caracteres hay por lo menos una letra, el método isalpla()
nos dice si un carácter es o no una letra.
La cadena a probar es ***456278)))
, la cual no contiene letras - al llamar any()
, podemos saber que retornara False
, ya que al llamar isalpha()
en cada carácter de la cadena retornará False
ya que ningún carácter es una letra
mi_cadena = "***456278)))"
buscando_letras = [caracter.isalpha() for caracter in mi_cadena]
print(any(buscando_letras))
# Salida
False
La variable buscando_letras
, es una lista con solo valores False
, lo cual lo podemos comprobar imprimiendo la variable.
print(buscando_letras)
# Salida
[False, False, False, False, False, False, False, False, False, False, False, False]
Como usar la función any() para combinar múltiples condiciones con el operador lógico OR
La palabra "OR" se puede traducir como "O".
ejemplo de uso: Quieres tomar agua O quieres tomar jugo
Ahora que quieres aprender programación, has decidido escribir la siguiente lista para ser más productivo y para motivarte un poco te darás un premio si por lo menos terminas una tarea ?.
![image-27](https://www.freecodecamp.org/espanol/news/content/images/2021/11/image-27.png)
Observa, aunque tenemos múltiples condiciones (tareas por hacer), podemos comer dulces aunque solo una condición se evalúa como True
y no es necesario cumplirlas todas.
¿No es esto similar a una sentencia if
donde revisamos si múltiples condiciones unidas por el operador lógico or
evaluadas como True
? Si lo es y la función any()
puede ser muy útil para hacerlo.
Imagina que tienes N
condiciones, c1
, c2
, c3
, ..., cN
. Así es como se vería en pseudocódigo:
if c1 or c2 or ... c_(N-1) or CN:
# Haz esto
else:
# Haz esto
Puedes guardar todas las condiciones en un iterable, como una lista o una tupla y llamas a la función any()
con este iterable para verificar si una o más condiciones retornan True
.
condiciones = [c1,c2,..., c_N]
if any(condiciones):
# Haz esto
else:
# Haz esto
Como usar la función all() en Python
Primero veamos la sintaxis básica de la función all()
.
? Sintaxis: all(iterable)
- Retorna
True
sibool(x)
esTrue
en todos los valores dex
en el iterable. - Retorna
True
si el iterable está vacío.
any([True, True, True]) # Retorna True
any([]) # Retorna True
any([True, True, False]) # Retorna False
La función all()
toma un iterable como argumento y retorna True
solo si todos los elementos del iterable tienen un valor booleano de True
o el iterable está vacío, en los demás casos retornara False
.
Como usar la función all() en Python, para saber si solo hay letras en una cadena de caracteres
La cadena de caracteres programar**es**divertido*
contiene letras y el carácter especial *
. Si comprobamos si todos los caracteres en la cadena son letras usando la función all()
, obtendríamos False
mi_cadena = "programar**es**divertido*"
buscando_letras = [caracter.isalpha() for caracter in mi_cadena]
print(all(buscando_letras))
# Saldida
False
print(buscando_letras)
# Salida
[True, True, True, True, True, True, True, True, True, False, False, True, True, False, False, True, True, True, True, True, True, True, True, True, False]
Podemos notar que la lista buscando_letras
tiene el valor False
en las posiciones donde está el símbolo *
Como usar la función all() en Python, para saber si solo hay números en una cadena de caracteres
Ahora comprobaremos si todos los caracteres de una cadena son números usando la función all()
, la cadena 56456278
contiene solamente dígitos, por lo tanto, al usar all()
obtendremos True
, lo cual podemos ver en el siguiente ejemplo:
mi_cadena = "56456278"
buscando_numeros= [caracter.isdigit() for caracter in mi_cadena]
print(all(buscando_numeros))
# Salida
True
print(buscando_numeros)
# Salida
[True, True, True, True, True, True, True, True]
Como usar la función all() para combinar múltiples condiciones con el operador lógico AND
La palabra AND se traduce como "y"
Consideremos el siguiente ejemplo: ahora en lugar de dulces, tienes la oportunidad de ganar un iPad, por lo tanto, las condiciones son más difíciles. Ahora tendrás que completar todas las tareas para que tu primo te dé el iPad.?
![image-25](https://www.freecodecamp.org/espanol/news/content/images/2021/11/image-25.png)
Podemos incluir múltiples condiciones encadenadas por el operador lógico AND
dentro de una sentencia if
de la siguiente forma:
if c1 and c2 and ... c_(N-1) and CN:
# Haz esto
else:
# Haz esto
También podemos usar la función all()
y guardar las condiciones en una lista para hacer el código un poco más legible de la siguiente forma:
condiciones = [c1,c2,..., c_N]
if all(condiciones):
# Haz esto
else:
# Haz esto
Espero que este tutorial te haya ayudado a entender las funciones any()
y all()
Espero verte en otro artículo y no olvides divertirte aprendiendo Python.