Usar any()
con isinstance()
En este paso, aprenderás cómo usar la función any()
en combinación con la función isinstance()
para verificar si una lista contiene al menos un elemento de un tipo específico. Esto es especialmente útil cuando se trabaja con listas de tipos mixtos.
La función any()
devuelve True
si algún elemento en un iterable (como una lista) es verdadero. De lo contrario, devuelve False
. La función isinstance()
comprueba si un objeto es una instancia de una clase o tipo especificado.
Creemos un script de Python para demostrar esto. En el editor de VS Code, crea un nuevo archivo llamado any_isinstance.py
en el directorio ~/project
.
## Create a mixed-type list
my_list = [1, "hello", 3.14, True]
## Check if the list contains any integers
has_integer = any(isinstance(x, int) for x in my_list)
## Print the result
print("List contains an integer:", has_integer)
## Check if the list contains any strings
has_string = any(isinstance(x, str) for x in my_list)
## Print the result
print("List contains a string:", has_string)
## Check if the list contains any floats
has_float = any(isinstance(x, float) for x in my_list)
## Print the result
print("List contains a float:", has_float)
## Check if the list contains any booleans
has_bool = any(isinstance(x, bool) for x in my_list)
## Print the result
print("List contains a boolean:", has_bool)
Guarda el archivo. Ahora, ejecuta el script utilizando el comando python
en la terminal:
python ~/project/any_isinstance.py
Deberías ver la siguiente salida:
List contains an integer: True
List contains a string: True
List contains a float: True
List contains a boolean: True
En este ejemplo, usamos una expresión generadora (isinstance(x, int) for x in my_list)
dentro de la función any()
. Esta expresión generadora produce True
si un elemento x
es una instancia de int
, y False
en caso contrario. La función any()
luego comprueba si alguno de estos valores es True
.
Modifiquemos la lista para ver cómo cambia la salida. Cambia el primer elemento de my_list
a un número de punto flotante:
## Create a mixed-type list
my_list = [1.0, "hello", 3.14, True]
## Check if the list contains any integers
has_integer = any(isinstance(x, int) for x in my_list)
## Print the result
print("List contains an integer:", has_integer)
## Check if the list contains any strings
has_string = any(isinstance(x, str) for x in my_list)
## Print the result
print("List contains a string:", has_string)
## Check if the list contains any floats
has_float = any(isinstance(x, float) for x in my_list)
## Print the result
print("List contains a float:", has_float)
## Check if the list contains any booleans
has_bool = any(isinstance(x, bool) for x in my_list)
## Print the result
print("List contains a boolean:", has_bool)
Guarda el archivo y ejecútalo de nuevo:
python ~/project/any_isinstance.py
La salida ahora debería ser:
List contains an integer: False
List contains a string: True
List contains a float: True
List contains a boolean: True
Ahora, la lista no contiene ningún entero, por lo que has_integer
es False
.
Esta técnica es útil para validar el contenido de una lista o para realizar diferentes acciones en función de los tipos de elementos presentes en la lista.