Este lenguaje es muy útil, especialmente gracias a su ecosistema plagado de bibliotecas especializadas en Ciencia de Datos.
Arrays y listas
En Python estándar, la estructura de secuencia principal es la lista (dinámica y heterogénea). Los arrays puros existen en el módulo nativo array, aunque se usan poco en comparación con el tipo ndarray que ofrecen bibliotecas como NumPy.
# LISTA (Nativa): Puede contener distintos tipos de datos y cambiar de tamaño
mi_lista = [10, "Python", 3.14, True]
mi_lista.append("Nuevo elemento")
# Acceso rápido a elementos (Indexing y Slicing)
print(mi_lista[0]) # 10 (Primer elemento)
print(mi_lista[-1]) # "Nuevo elemento" (Último elemento)
print(mi_lista[1:3]) # ['Python', 3.14] (Sublista desde índice 1 hasta 2)
# ARRAY (Módulo nativo 'array'): Homogéneo y eficiente en memoria
import array
mi_array = array.array('i', [1, 2, 3, 4, 5]) # 'i' especifica tipo entero
mi_array.append(6)
Sintaxis especial
Python permite manipular variables y secuencias de formas muy concisas, con la manera en que se hacen asignaciones.
# Unpacking (Desempaquetado de secuencias)
a, b, c = [1, 2, 3]
# Intercambio de variables sin variable temporal
a, b = b, a
# Desempaquetado extendido con el operador *
primero, *resto, ultimo = [1, 2, 3, 4, 5]
# primero = 1, resto = [2, 3, 4], ultimo = 5
Estructuras de control
Las comprensiones de listas (list comprehensions) permiten generar y filtrar listas en una sola línea de forma legible.
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Crear una lista con el cuadrado de los números pares
cuadrados_pares = [x**2 for x in numeros if x % 2 == 0]
# Resultado: [4, 16, 36, 64, 100]
El bloque else adjunto a un bucle for se ejecuta únicamente si el bucle termina de forma natural (es decir, sin haber encontrado un break).
buscar = 7
numeros = [1, 3, 5, 9]
for num in numeros:
if num == buscar:
print("¡Encontrado!")
break
else:
# Se ejecuta solo si NINGÚN elemento activó el 'break'
print("El elemento no está en la lista.")
Introducido en Python 3.10, la coincidencia de patrones (structural pattern matching) va más allá del switch/case tradicional al permitir extraer valores directamente de estructuras complejas.
def procesar_comando(comando):
match comando.split():
case ["ir", ("norte" | "sur" | "este" | "oeste") as direccion]:
print(f"Moviéndose hacia el {direccion}")
case ["atacar", objetivo]:
print(f"Atacando a {objetivo}")
case ["usar", item, "con", objetivo]:
print(f"Usando {item} en {objetivo}")
case _:
print("Comando no reconocido")
procesar_comando("ir norte")
procesar_comando("usar llave con puerta")
Los gestores de contexto como with, simplifican la gestión de recursos (archivos, conexiones a bases de datos, etc.) asegurando su cierre automático aunque ocurran excepciones.
# Abre el archivo y garantiza su cierre automático al salir del bloque
with open("ejemplo.txt", "w", encoding="utf-8") as f:
f.write("Hola, Python!")
Esta página está licenciada bajo CC BY-NC-SA 4.0 por Laboratorios Narratech.