Cómo utilizar las funciones all, any, max y min en Python

El autor seleccionó el Fondo de Ayuda COVID-19 para recibir una donación como parte del programa Write for DOnations.
Introducción
Python incluye una serie de funciones integradas: son funciones globales de Python que se pueden llamar desde cualquier código Python sin importar módulos adicionales. Por ejemplo, siempre puedes llamar a la print
función integrada para generar texto.
Varias de las funciones integradas ( all
, any
, max
y min
entre ellas) toman iterables de valores como argumento y devuelven un único valor. Un iterable es un objeto de Python que se puede "iterar", es decir, devolverá elementos en una secuencia de modo que pueda usarlo en un for
bucle. Las funciones integradas son útiles cuando, por ejemplo, desea determinar si todos o alguno de los elementos de una lista cumplen con ciertos criterios, o encontrar el elemento más grande o más pequeño en una lista.
En este tutorial, utilizará las funciones integradas all
, any
, max
y min
.
Prerrequisitos
Para aprovechar al máximo este tutorial, se recomienda tener:
-
Algunos conocimientos de programación en Python 3. Puedes revisar nuestra serie de tutoriales Cómo codificar en Python 3 para obtener conocimientos básicos.
-
La consola interactiva de Python: si desea probar el código de ejemplo de este tutorial, puede utilizar el tutorial Cómo trabajar con la consola interactiva de Python.
Usandoall
La función incorporada all
verifica si cada elemento de un iterable es True
. Por ejemplo:
all([True, True])
Si ejecuta el código anterior, recibirá este resultado:
OutputTrue
En este primer ejemplo, se llama all
y se le proporciona una lista con dos elementos (dos True
valores booleanos). Como cada elemento del iterable es True
, el resultado fue True
.
all
retornará False
si uno o más elementos en el iterable dado son False
:
all([True, False, True])
Si ejecuta el código anterior, recibirá este resultado:
OutputFalse
Se llama all
con una lista que contiene tres elementos, incluido un False
valor booleano. Dado que uno de los elementos del iterable era False
, la salida de la llamada a all
era False
.
En particular, all
deja de iterar y regresa inmediatamente False
tan pronto como encuentra la primera False
entrada en un iterable. Por lo tanto, all
puede ser útil si desea verificar condiciones sucesivas que pueden basarse entre sí, pero regresa inmediatamente tan pronto como se cumple una condición False
.
Un caso especial que debemos tener en cuenta es cuando all
se proporciona un iterable vacío:
all([])
Si ejecuta el código anterior, recibirá este resultado:
OutputTrue
Cuando se proporciona all
un iterable vacío (por ejemplo, una lista vacía como all([])
), su valor de retorno es True
. Por lo tanto, all
devuelve True
si cada elemento del iterable es Verdadero o hay 0 elementos.
all
es particularmente útil cuando se combina con generadores y condiciones personalizadas. El uso all
suele ser más breve y conciso que si escribiera un for
bucle completo. Consideremos un ejemplo para averiguar si hay elementos en una lista que comiencen con "s"
:
animals = ["shark", "seal", "sea urchin"]all(a.startswith("s") for a in animals)
Si ejecuta el código anterior, recibirá este resultado:
OutputTrue
Se llama all
con un generador como argumento. El generador produce un valor booleano para cada elemento de la animals
lista en función de si el animal comienza o no con la letra s
. El valor de retorno final se True
debe a que cada elemento de la animals
lista comienza con s
.
Nota: A menudo, puede utilizar expresiones de generador en lugar de listas por comprensión como una forma de ahorrar memoria. Por ejemplo, considere all(i 8 for i in range(3))
y all([i 8 for i in range(3)])
. Ambas instrucciones devuelven True
porque 0, 1, 2 son todos menores que 8. Sin embargo, el segundo ejemplo (que utiliza una lista por comprensión) tiene la sobrecarga adicional de crear implícitamente una lista de tres entradas de longitud ( [True, True, True]
) y luego pasar esa lista a la all
función. El primer ejemplo (que utiliza expresiones de generador), por el contrario, pasa un objeto generador a la all
función, sobre el cual la all
función itera directamente sin la sobrecarga de una lista intermedia.
Tenga en cuenta que el código equivalente escrito utilizando un bucle completo for
habría sido significativamente más detallado:
animals = ["shark", "seal", "sea urchin"]def all_animals_start_with_s(animals): for a in animals: if not a.startswith("s"): return False return Trueprint(all_animals_start_with_s(animals))
Sin all
, su código para determinar si todos los animales comienzan con la letra s
requiere varias líneas más para implementarse.
A continuación, verás la función hermana de all
: any
.
Usandoany
Puede utilizar la función incorporada any
para comprobar si algún elemento de un iterable es True
. Por ejemplo:
any([False, True])
Si ejecuta el código anterior, recibirá este resultado:
OutputTrue
Llamas any
y le das una lista con dos elementos (un False
valor booleano y un True
valor booleano). Como uno o más elementos del iterable eran True
, la salida también era True
.
any
retornará False
si, y solo si, 0 de los elementos en el iterable dado son True
:
all([False, False, False])
Si ejecuta el código anterior, recibirá este resultado:
OutputFalse
Se llama any
con una lista que contiene tres elementos (todos False
valores booleanos). Dado que 0 de los elementos del iterable es True
, la salida de la llamada a any
es False
.
En particular, any
deja de iterar y regresa inmediatamente True
tan pronto como encuentra la primera True
entrada en un iterable. Por lo tanto, any
puede ser útil si desea verificar condiciones sucesivas, pero regresa inmediatamente tan pronto como se cumple una condición True
.
any
—al igual que su método hermano— es all
particularmente útil cuando se combina con generadores y condiciones personalizadas (en lugar de un for
bucle completo). Consideremos un ejemplo para averiguar si hay elementos en una lista que terminan con "urchin"
:
animals = ["shark", "seal", "sea urchin"]any(s.endswith("urchin") for s in animals)
Recibirás este resultado:
OutputTrue
Se llama any
con un generador como argumento. El generador produce un valor booleano para cada elemento de la animals
lista en función de si el animal termina o no con urchin
. El valor de retorno final se True
debe a que un elemento de la animals
lista termina con urchin
.
Nota: Cuando any
se proporciona un iterable vacío (por ejemplo, una lista vacía como any([])
), su valor de retorno es False
. Por lo tanto, any
devuelve False
si hay 0 elementos en el iterable o si todos los elementos en el iterable también son False
.
A continuación, revisaremos otra función incorporada: max
.
Usandomax
La función incorporada max
devuelve el elemento más grande indicado en sus argumentos. Por ejemplo:
max([0, 8, 3, 1])
max
Se le proporciona una lista con cuatro números enteros como argumento. El valor de retorno de max
es el elemento más grande de esa lista: 8
.
El resultado será el siguiente:
Output8
Si se dan dos o más argumentos posicionales (a diferencia de un solo argumento posicional con un iterable), max
devuelve el mayor de los argumentos dados:
max(1, -1, 3)
Si ejecuta el código anterior, recibirá este resultado:
Output3
max
Se le dan tres argumentos individuales, el mayor de los cuales es 3
. Por lo tanto, el valor de retorno de la llamada a max
es 3
.
Al igual any
que y all
, max
es particularmente útil porque requiere menos líneas para su uso que el código equivalente escrito como un for
bucle completo.
max
También puede trabajar con objetos más complejos que los números. Por ejemplo, puede utilizar max
diccionarios u otros objetos personalizados en su programa. max
Puede alojar estos objetos utilizando su argumento de palabra clave llamado key
.
Puede utilizar la key
palabra clave argument para definir una función personalizada que determine el valor utilizado en las comparaciones para determinar el valor máximo. Por ejemplo:
entries = [{"id": 9}, {"id": 17}, {"id": 4}]max(entries, key=lambda x: x["id"])
El resultado será el siguiente:
Output{'id': 17}
Llamas max
con una lista de diccionarios como entrada. Proporcionas una lambda
función anónima como key
argumento de palabra clave. max
llama a la lambda
función para cada elemento de la entries
lista y devuelve el valor de la "id"
clave del elemento dado. El valor de retorno final es el segundo elemento en entries
: {"id": 17}
. El segundo elemento en entries
tenía el "id"
valor más grande y, por lo tanto, se consideró que era el elemento máximo.
Tenga en cuenta que cuando max
se llama con un iterable vacío, se niega a operar y, en su lugar, genera un ValueError
:
max([])
Si ejecuta este código, recibirá el siguiente resultado:
OutputTraceback (most recent call last): File "max.py", line 1, in module max([])ValueError: max() arg is an empty sequence
Llama max
con una lista vacía como argumento. max
no acepta esto como una entrada válida y genera una ValueError
excepción en su lugar.
max
tiene una contraparte llamada min
, que revisarás a continuación.
Usandomin
La función incorporada min
devuelve el elemento más pequeño proporcionado en sus argumentos. Por ejemplo:
min([8, 0, 3, 1])
Proporciona min
una lista con cuatro números enteros como argumento. El valor de retorno min
es el elemento más pequeño de esa lista: 0
.
La salida será:
Output0
Si se dan dos o más argumentos posicionales (a diferencia de un solo argumento posicional con un iterable), min
devuelve el más pequeño de los argumentos dados:
min(1, -1, 3)
Si ejecuta el código anterior, recibirá este resultado:
Output-1
Proporciona min
tres argumentos individuales, el más pequeño de los cuales es -1
. Por lo tanto, el valor de retorno de la llamada a min
es -1
.
Al igual que max
, min
admite el argumento de palabra clave named key
para que puedas pasarle objetos más complejos que números. El uso del key
argumento te permite usar la min
función con cualquier objeto personalizado que tu programa pueda definir.
Puede utilizar la key
palabra clave argument para definir una función personalizada que determine el valor utilizado en las comparaciones para determinar el valor mínimo. Por ejemplo:
entries = [{"id": 9}, {"id": 17}, {"id": 4}]min(entries, key=lambda x: x["id"])
Output{'id': 4}
Llamas min
con una lista de diccionarios como entrada. Proporcionas una lambda
función anónima como key
argumento de palabra clave. min
llama a la lambda
función para cada elemento de la entries
lista y devuelve el valor de la "id"
clave del elemento dado. El valor de retorno final es el tercer elemento en entries
: {"id": 4}
. El tercer elemento en entries
tenía el valor reducido "id"
, y por lo tanto se consideró el elemento mínimo.
Por ejemplo max
, cuando se llama min
con un iterable vacío, se niega a funcionar y, en su lugar, genera un ValueError
:
min([])
Si ejecuta el código anterior, recibirá este resultado:
OutputTraceback (most recent call last): File "min.py", line 1, in module min([])ValueError: min() arg is an empty sequence
Llama min
con una lista vacía como argumento. min
no acepta esto como una entrada válida y genera una ValueError
excepción en su lugar.
Conclusión
En este tutorial, utilizaste las funciones integradas de Python all
, any
, max
y min
. Puedes obtener más información sobre las funciones all
, any
, max
y min
y otras funciones integradas de Python en la documentación de Python.
Para obtener más información sobre otras funciones integradas de Python, también puede consultar Funciones integradas de Python 3 para trabajar con números, Cómo usar la función de mapa de Python y Cómo usar la función de filtro de Python.
Deja una respuesta