- Números
Python maneja diferentes tipos de números, principalmente enteros y flotantes. Los enteros pueden variar en tamaño dependiendo de la arquitectura del sistema (32 o 64 bits), con rangos definidos.
Representación de Enteros
En sistemas de 32 bits, los enteros abarcan el rango de -231 a 231-1. En sistemas de 64 bits, este rango se expande a -263 a 263-1.
Métodos Comunes de Enteros
Los objetos enteros en Python disponen de varios métodos para operaciones específicas:
bit_length(): Devuelve el número mínimo de bits necesarios para representar el entero en binario.conjugate(): Retorna el propio entero (los enteros no tienen parte imaginaria).__abs__(): Equivalente aabs(x), devuelve el valor absoluto.__add__(y): Equivalente ax + y.__and__(y): Equivalente ax & y(operación AND a nivel de bits).__cmp__(y): Compara dos números.__coerce__(y): Fuerza la conversión a una tupla.__divmod__(y): Equivalente adivmod(x, y), devuelve el cociente y el residuo.__div__(y): Equivalente ax / y.__float__(): Convierte el entero a un número de punto flotante.__floordiv__(y): Equivalente ax // y(división entera).__format__(*args, **kwargs): Para formateo de cadenas.__getattribute__(name): Accede a atributos.__getnewargs__(*args, **kwargs): Utilizado internamente en la creación de objetos.__hash__(): Devuelve el valor hash del objeto, usado en estructuras de datos como diccionarios.__hex__(): Devuelve la representación hexadecimal del entero.__index__(): Usado para operaciones de slicing.__int__(): Convierte el valor a entero.__invert__(): Equivalente a~x(inversión a nivel de bits).__long__(): Convierte el valor a un entero largo (en versiones antiguas de Python).__lshift__(y): Equivalente ax << y(desplazamiento a la izquierda).__mod__(y): Equivalente ax % y(módulo).__mul__(y): Equivalente ax * y.__neg__(): Equivalente a-x(negación).__new__(S, *more): Método estático para la creación de instancias.__nonzero__(): Equivalente ax != 0.__oct__(): Devuelve la representación octal del entero.__or__(y): Equivalente ax | y(operación OR a nivel de bits).__pos__(): Equivalente a+x.__pow__(y, z=None): Equivalente apow(x, y[, z])(potencia).__radd__(y),__rand__(y), etc.: Métodos para operaciones inversas (ej.,y + x).__repr__(): Devuelve la representación "oficial" del objeto.__str__(): Devuelve la representación "amigable" del objeto.__sub__(y): Equivalente ax - y.__truediv__(y): Equivalente ax / y(división real).__trunc__(): Devuelve la parte entera truncada.__xor__(y): Equivalente ax ^ y(operación XOR a nivel de bits).
Los atributos denominator, imag, numerator y real están asociados con números racionales o complejos, pero para los enteros puros, estos atributos no tienen un significado directo o son triviales (como el denominador y numerador siendo 1 y el número mismo, respectivamente).
- Booleanos
Los valores booleanos representan la verdad lógica. Solo existen dos valores:
True(Verdadero)False(Falso)
Estos valores son fundamentales para la toma de decisiones en el código, a menudo resultantes de comparaciones u operaciones lógicas.
Ejemplo de Uso
Los booleanos se utilizan comúnmente en declaraciones condicionales:
valor1 = 10
valor2 = 20
print(valor1 > valor2) # Salida: False
print(valor1 < valor2) # Salida: True
# Evaluación de expresiones lógicas complejas
# El orden de precedencia es: paréntesis, NOT, AND, OR
expresion_compleja = (valor1 == 10 and valor2 == 20) or (valor1 > 5 and False)
print(expresion_compleja) # Salida: True
- Cadenas (Strings)
Las cadenas de texto son secuencias inmutables de caracteres. Se definen utilizando comillas simples ('...') o dobles ("...").
Operaciones Comunes con Cadenas
- Eliminar espacios en blanco (
strip(),lstrip(),rstrip()). - Dividir cadenas en subcadenas (
split(),rsplit(),partition(),rpartition(),splitlines()). - Obtener la longitud (
len()). - Acceder a caracteres individuales mediante índice (
cadena[indice]). - Extraer subcadenas mediante slicing (
cadena[inicio:fin:paso]). - Reemplazar subcadenas (
replace()). - Verificar si una cadena empieza o termina con un prefijo/sufijo (
startswith(),endswith()). - Contar ocurrencias de subcadenas (
count()). - Convertir a mayúsculas o minúsculas (
upper(),lower()). - Capitalizar o convertir a formato título (
capitalize(),title()). - Unir elementos de un iterable en una cadena (
join()). - Formatear cadenas (
format()).
Métodos Detallados de Cadenas
Python proporciona una rica API para manipulación de cadenas:
capitalize(): Pone en mayúscula el primer carácter y el resto en minúscula.center(width, fillchar=None): Centra la cadena en un ancho especificado, rellenando confillchar.count(sub, start=None, end=None): Cuenta ocurrencias desub.decode(encoding=None, errors=None): Decodifica la cadena (usualmente de bytes a Unicode).encode(encoding=None, errors=None): Codifica la cadena (usualmente de Unicode a bytes).endswith(suffix, start=None, end=None): Verifica si la cadena termina consuffix.expandtabs(tabsize=None): Expande caracteres de tabulación a espacios.find(sub, start=None, end=None): Encuentra la subcadena devolviendo el índice más bajo o -1 si no se encuentra.format(*args, **kwargs): Formatea la cadena usando argumentos posicionales y nominales.index(sub, start=None, end=None): Similar afind, pero lanza un error si no se encuentra.isalnum(): Verifica si todos los caracteres son alfanuméricos.isalpha(): Verifica si todos los caracteres son alfabéticos.isdigit(): Verifica si todos los caracteres son dígitos.islower(): Verifica si todos los caracteres en mayúscula están en minúscula.isspace(): Verifica si todos los caracteres son espacios en blanco.istitle(): Verifica si la cadena tiene formato de título.isupper(): Verifica si todos los caracteres en minúscula están en mayúscula.join(iterable): Concatena elementos de un iterable usando la cadena como separador.ljust(width, fillchar=None): Justifica a la izquierda, rellenando a la derecha.lower(): Convierte la cadena a minúsculas.lstrip(chars=None): Elimina caracteres de espacio en blanco (o especificados) del inicio.partition(sep): Divide la cadena en tres partes alrededor de la primera ocurrencia del separador.replace(old, new, count=None): Reemplazaoldpornew, opcionalmente un número limitado de veces.rfind(sub, start=None, end=None): Similar afind, pero buscando desde el final.rindex(sub, start=None, end=None): Similar aindex, pero buscando desde el final.rjust(width, fillchar=None): Justifica a la derecha, rellenando a la izquierda.rpartition(sep): Divide la cadena en tres partes alrededor de la última ocurrencia del separador.rsplit(sep=None, maxsplit=None): Divide la cadena desde la derecha.rstrip(chars=None): Elimina caracteres de espacio en blanco (o especificados) del final.split(sep=None, maxsplit=None): Divide la cadena usandosepcomo delimitador.splitlines(keepends=False): Divide la cadena en líneas.startswith(prefix, start=None, end=None): Verifica si la cadena comienza conprefix.strip(chars=None): Elimina caracteres de espacio en blanco (o especificados) de ambos extremos.swapcase(): Intercambia mayúsculas y minúsculas.title(): Convierte la cadena a formato de título.translate(table, deletechars=None): Aplica una tabla de traducción y/o elimina caracteres.upper(): Convierte la cadena a mayúsculas.zfill(width): Rellena la cadena con ceros a la izquierda hasta alcanzar un ancho especificado.
Los métodos __add__, __contains__, __eq__, __format__, __getattribute__, __getitem__, __getslice__, __ge__, __gt__, __hash__, __init__, __len__, __le__, __lt__, __mul__, __new__, __ne__, __repr__, __rmod__, __rmul__, __sizeof__, __str__ implementan la funcionalidad de los operadores y funciones incorporadas para las cadenas.
- Listas
Las listas son colecciones ordenadas y mutables de elementos. Pueden contener elementos de diferentes tipos.
Creación de Listas
Se crean encerrando elementos entre corchetes [] o usando el constructor list():
nombres = ['Alice', 'Bob', 'Charlie']
nombres_desde_iterable = list(('Alice', 'Bob', 'Charlie'))
Operaciones Básicas con Listas
- Acceso por índice (
lista[indice]). - Slicing (
lista[inicio:fin:paso]). - Añadir elementos (
append()). - Insertar elementos en una posición específica (
insert()). - Eliminar elementos (
remove(),pop(),del lista[indice]). - Obtener la longitud (
len()). - Iterar sobre la lista (bucles
for). - Verificar si un elemento está contenido en la lista (operador
in). - Extender la lista con elementos de otro iterable (
extend()). - Contar ocurrencias de un valor (
count()). - Obtener el índice de la primera ocurrencia de un valor (
index()). - Invertir la lista in-place (
reverse()). - Ordenar la lista in-place (
sort()).
Métodos de Listas
append(p_object): Añadep_objectal final.count(value): Devuelve el número de veces quevalueaparece.extend(iterable): Añade todos los elementos deiterableal final.index(value, start=None, stop=None): Devuelve el índice de la primera ocurrencia devalue. LanzaValueErrorsi no se encuentra.insert(index, p_object): Insertap_objectantes del índice especificado.pop(index=None): Elimina y devuelve el elemento en el índice dado (por defecto, el último). LanzaIndexErrorsi la lista está vacía o el índice es inválido.remove(value): Elimina la primera ocurrencia devalue. LanzaValueErrorsi no se encuentra.reverse(): Invierte los elemantos de la lista in-place.sort(cmp=None, key=None, reverse=False): Ordena los elementos de la lista in-place.
Los métodos __add__, __contains__, __delitem__, __delslice__, __eq__, __getattribute__, __getitem__, __getslice__, __ge__, __gt__, __iadd__, __imul__, __init__, __iter__, __len__, __le__, __lt__, __mul__, __new__, __ne__, __repr__, __reversed__, __rmul__, __setitem__, __setslice__, __sizeof__ son fundamentales para la operación de listas como objetos mutables y secuencias.
- Tuplas
Las tuplas son colecciones ordenadas e inmutables de elementos. Una vez creadas, no se pueden modificar sus elementos.
Creación de Tuplas
Se crean encerrando elementos entre paréntesis () o usando el constructor tuple():
edades = (11, 22, 33, 44, 55)
edades_desde_iterable = tuple([11, 22, 33, 44, 55])
Operaciones Básicas con Tuplas
- Acceso por índice (
tupla[indice]). - Slicing (
tupla[inicio:fin:paso]). - Iterar sobre la tupla.
- Obtener la longitud (
len()). - Verificar si un elemento está contenido en la tupla (operador
in). - Contar ocurrencias de un valor (
count()). - Obtener el índice de la primera ocurrencia de un valor (
index()).
Métodos de Tuplas
Las tuplas tienen menos métodos que las listas debido a su inmutabilidad:
count(value): Devuelve el número de veces quevalueaparece.index(value, start=None, stop=None): Devuelve el índice de la primera ocurrencia devalue. LanzaValueErrorsi no se encuentra.
Los métodos __add__, __contains__, __eq__, __getattribute__, __getitem__, __getnewargs__, __getslice__, __ge__, __gt__, __hash__, __init__, __iter__, __len__, __le__, __lt__, __mul__, __new__, __ne__, __repr__, __rmul__, __sizeof__ definen el comportamiento de las tuplas como secuencias inmutables.
- Diccionarios
Los diccionarios son colecciones no ordenadas (en versiones anteriores a Python 3.7) o ordenadas (a partir de Python 3.7) de pares clave-valor. Las claves deben ser únicas e inmutables.
Creación de Diccionarios
Se crean usando llaves {} con pares clave:valor, o usando el constructor dict():
persona = {"nombre": "Sr. Wu", "edad": 18}
persona_desde_dict = dict({"nombre": "Sr. Wu", "edad": 18})
persona_desde_args = dict(nombre="Sr. Wu", edad=18)
Operaciones Comunes con Diccionarios
- Acceso a valores por clave (
diccionario[clave]). - Añadir o actualizar elementos (
diccionario[clave] = valor). - Eliminar elementos (
del diccionario[clave],pop(),popitem()). - Obtener el valor asociado a una clave, con un valor por defecto si la clave no existe (
get(clave, default)). - Verificar si una clave existe (operador
in,has_key()- obsoleto). - Obtener listas de claves (
keys()), valores (values()) o pares (clave, valor) (items()). - Iterar sobre claves, valores o pares.
- Obtener la longitud (número de pares clave-valor) (
len()). - Actualizar un diccionario con otro (
update()). - Limpiar el diccionario (
clear()). - Crear copias (
copy()- copia superficial).
Métodos de Diccionarios
clear(): Elimina todos los elementos del diccionario.copy(): Devuelve una copia superficial del diccionario.fromkeys(S, v=None): Crea un nuevo diccionario con claves deSy valores iguales av(por defectoNone).get(k, d=None): Devuelve el valor para la claveksi existe, de lo contrario devuelved(por defectoNone).has_key(k): (Obsoleto en Python 3) Verifica si la clavekexiste. Usark in dict.items(): Devuelve una lista de tuplas (clave, valor).iteritems(): Devuelve un iterador sobre los pares (clave, valor).iterkeys(): Devuelve un iterador sobre las claves.itervalues(): Devuelve un iterador sobre los valores.keys(): Devuelve una lista de las claves.pop(k, d=None): Elimina la claveky devuelve su valor. Sikno se encuentra, devuelvedo lanzaKeyError.popitem(): Elimina y devuelve un par (clave, valor) arbitrario (o el último insertado en Python 3.7+). LanzaKeyErrorsi el diccionario está vacío.setdefault(k, d=None): Sikestá en el diccionario, devuelve su valor. Si no, insertakcon valordy lo devuelve.update(E=None, **F): Actualiza el diccionario con pares clave-valer deE(otro diccionario o iterable) y/o argumentos nominalesF.values(): Devuelve una lista de los valores.viewitems(),viewkeys(),viewvalues(): (En Python 2) Devuelven vistas sobre los elementos, claves y valores respectivamente. En Python 3,.keys(),.values(),.items()devuelven objetos de vista directamente.
Los métodos __cmp__, __contains__, __delitem__, __eq__, __getattribute__, __getitem__, __ge__, __gt__, __init__, __iter__, __len__, __le__, __lt__, __new__, __ne__, __repr__, __setitem__, __sizeof__ son cruciales para el funcionamiento de los diccionarios como mapeos mutables y contenedores.