Capítulo 7: Funciones integradas e iterables
Python viene equipado con una "caja de herramientas" de funciones integradas (built-in) que están siempre disponibles, sin necesidad de importar ningún módulo. Estas funciones cubren un amplio espectro de tareas comunes, desde operaciones matemáticas hasta la manipulación de colecciones de datos. Este capítulo explora las más importantes y se adentra en conceptos más avanzados como los generadores, que permiten manejar grandes volúmenes de datos de manera increíblemente eficiente.
7.1. ¿Qué son las funciones integradas?
Las funciones integradas (built-in functions) son funciones predefinidas que forman parte del núcleo de Python. Están siempre disponibles sin necesidad de importar módulos y están optimizadas para máximo rendimiento.
Puedes ver la lista completa ejecutando:
print(dir(__builtins__))Todas estas funciones están perfectamente documentadas en: docs.python.org/3/library/functions.html
7.2. Funciones matemáticas
A continuación se resumen algunas de las funciones más comunes para cálculos matemáticos.
Funciones matemáticas
abs(x)
Devuelve el valor absoluto de x.
abs(-5) → 5
divmod(a, b)
Devuelve el cociente y el resto.
divmod(17, 5) → (3, 2)
max(iterable)
Devuelve el valor máximo de un iterable.
max([1, 5, 3]) → 5
min(iterable)
Devuelve el valor mínimo de un iterable.
min([1, 5, 3]) → 1
pow(base, exp)
Calcula base elevado a la potencia exp.
pow(2, 3) → 8
round(n, d)
Redondea el número n a d decimales.
round(3.14159, 2) → 3.14
sum(iterable)
Suma todos los elementos de un iterable.
sum([1, 2, 3]) → 6
Ejemplos prácticos
7.3. Funciones para codificación y representación
A continuación se resumen algunas de las funciones más comunes para la codificación y representación de datos y valores numéricos.
bin(x)
Convierte un entero a su representación binaria.
bin(10) → "0b1010"
chr(x)
Devuelve el carácter correspondiente al código Unicode i.
chr(65) → "A"
hex(x)
Convierte un entero a su representación hexadecimal.
hex(255) → "0xff"
oct(x)
Convierte un entero a su representación octal.
hex(8) → "0o10"
ord(char)
Devuelve el código Unicode del carácter c.
ord("A") → 65
Ejemplos prácticos
7.4. Funciones para iterables
Estas funciones son esenciales para trabajar con colecciones de datos como listas, tuplas o diccionarios.
Funciones de verificación y evaluación
Permiten comprobar o analizar propiedades generales de un conjunto de elementos. Pueden verificar condiciones lógicas o medir las características del iterable, como su longitud.
all(iterable)
Devuelve True si todos los elementos son verdaderos.
all([True, True, False]) → False
any(iterable)
Devuelve True si al menos un elemento es verdadero.
any([False, True, False]) → True
len(obj)
Devuelve el número de elementos (la longitud) de un iterable.
len([1, 2, 3]) → 3
Ejemplos prácticos
Funciones de transformación y generación de iteradores
Permiten procesar, ordenar, combinar o filtrar datos de manera funcional, devolviendo nuevos iteradores que pueden recorrerse con bucles o convertirse en listas.
enumerate(iterable)
Enumeración
Devuelve un iterador de tuplas que contienen un contador (índice) y el valor de cada elemento. Muy útil para bucles for.
list(enumerate(
['a','b'])) → [(0,'a'), (1,'b')]
zip(*iterables)
Combinación
Combina múltiples iterables en paralelo, creando un iterador de tuplas donde cada tupla contiene un elemento de cada iterable de entrada.
list(zip([1,2],
['a','b'])) → [(1,'a'), (2,'b')]
map(func,iterable)
Transformación
Aplica una función a cada elemento de un iterable y devuelve un iterador con los resultados.
list(map(str.upper,
['a','b'])) → ['A','B']
filter(func,iterable)
Filtrado
Devuelve un iterador con los elementos del iterable para los cuales la función devuelve True.
list(filter(
lambda x: x>0,
[-2,3,0])) → [3]
sorted(iterable)
Ordenación
Devuelve una nueva lista ordenada a partir de los elementos del iterable.
sorted([3,1,2]) → [1,2,3]
reversed(iterable)
Inversión
Devuelve un iterador que recorre el iterable en orden inverso.
list(reversed([1,2,3])) → [3,2,1]
Ejemplos enumerate(): Indexar elementos
Ejemplos zip(): Combinar elementos
Ejemplos map(): Transformar elementos
Ejemplos filter(): Filtrar elementos
Ejemplos sorted() y reversed(): Reordenar elementos
7.5. Funciones de conversión de tipos
Estas funciones permiten transformar datos de un tipo a otro, una tarea fundamental en programación.
bool(x)
Convierte x a un booleano.
bool(0) → False
int(x)
Convierte x a un entero.
int("42") → 42
float(x)
Convierte x a un número de punto flotante.
float("3.14") → 3.14
str(x)
Convierte x a una cadena de texto.
str(42) → "42"
list(iterable)
Convierte un iterable a una lista.
list("abc") → ['a', 'b', 'c']
tuple(iterable)
Convierte un iterable a una tupla.
tuple([1, 2, 3]) → (1, 2, 3)
set(iterable)
Convierte un iterable a un conjunto (eliminando duplicados).
set([1, 1, 2, 3]) → {1, 2, 3}
dict()
Crea un diccionario.
dict([('a', 1), ('b', 2)]) → {'a': 1, 'b': 2}
Ejemplos prácticos
7.6. Generadores: Iteradores simplificados
Los generadores son una forma elegante y eficiente de crear iteradores. En lugar de construir una lista completa en memoria, un generador produce valores "bajo demanda" utilizando la palabra clave yield. Cada vez que se solicita un valor, la función generadora se ejecuta hasta el yield, entrega el valor y pausa su estado hasta la siguiente solicitud.
Generador básico
Los generadores son extremadamente eficientes en el uso de memoria, especialmente para secuencias muy largas. La sintaxis de las comprensiones de listas también se puede adaptar para crear expresiones generadoras, que son aún más concisas:
El resultado muestra una diferencia drástica en el uso de memoria, demostrando el poder de los generadores.
Resumen del Capítulo
Las funciones integradas de Python y los conceptos de iteradores/generadores forman parte del arsenal fundamental de todo programador Python. Estas herramientas no solo simplifican el código, sino que también optimizan el rendimiento y el uso de memoria, especialmente cuando se trabaja con grandes volúmenes de datos.
💡 Conceptos Clave:
Funciones matemáticas:
abs,max,min,sum,pow, etc.Funciones para iterables:
len,map,filter,zip,enumerate,sorted, etc.Conversión de tipos:
int,float,str,list,tuple,set,dictGeneradores: Funciones que usan
yieldpara generar valores bajo demandaEficiencia de memoria: Generadores vs listas para grandes volúmenes de datos
🤔 Preguntas de Reflexión:
¿En qué situaciones son más útiles los generadores que las listas?
¿Cómo pueden las funciones
mapyfiltermejorar la legibilidad del código?¿Qué ventajas aporta
enumerate()frente a usarrange(len())?
🔧 Ejercicio Práctico:
Crea un programa que:
Use funciones matemáticas para calcular estadísticas de un dataset
Use
map,filteryzippara transformar y combinar datosCompare rendimiento entre listas y generadores con datos grandes
Si bien estas herramientas integradas son potentes, nos falta aún por conocer cuáles son los métodos nativos que nos ofrecen las estructuras básicas de datos: cadenas, listas, diccionarios y conjuntos. En el siguiente capítulo se aborda cómo estos recursos permiten transformar, ordenar, buscar, filtrar y organizar la información de manera robusta, adaptable y "pythónica".
Última actualización
¿Te fue útil?