Python, sin duda, puede llamarse un lenguaje que ha experimentado un crecimiento significativo en la última década, un lenguaje que ha demostrado ser poderoso. He creado muchas aplicaciones de Python, desde
mapas interactivos hasta
blockchains . Python tiene muchas características. Es muy difícil para los principiantes comprender todo esto de una vez.

Incluso si eres un programador que está cambiando a Python desde otro lenguaje como C, o si eres un científico que solía trabajar en MATLAB, la programación de Python usando abstracciones de alto nivel es definitivamente una experiencia muy especial. Quiero hablar sobre cinco características muy importantes, en mi opinión, de Python que, desafortunadamente, no conocía antes.
1. Inclusión de listas: escribir un código compacto
Muchos llamarían mecanismos de Python como
lambda
,
map
y
filter
los secretos que todo programador novato debería aprender. Y aunque estoy seguro de que vale la pena saber todo esto, en la mayoría de las situaciones en las que se pueden aplicar estas herramientas, he encontrado una flexibilidad insuficiente de estas herramientas. Como resultado, están lejos de ser tan útiles como parecen.
Lambda
es un método para crear funciones pequeñas de una sola línea para un solo uso. Si se llama a una función muchas veces, degrada el rendimiento. Pero al mismo tiempo, la función de
map
aplica la función a todos los elementos de la lista, y el
filter
selecciona de un determinado conjunto de elementos un subconjunto correspondiente a la condición especificada por el usuario.
add_func = lambda z: z ** 2 is_odd = lambda z: z%2 == 1 multiply = lambda x,y: x*y aList = list(range(10)) print(aList)
La comprensión de listas es un diseño compacto y conveniente que se utiliza para crear listas a partir de otras listas utilizando expresiones y condiciones flexibles. Esta construcción se describe utilizando corchetes. Incluyen expresiones o funciones que se aplican a cada elemento de la lista solo si ese elemento cumple una determinada condición. La inclusión de listas puede ser una estructura de varios niveles que contiene bloques anidados. Esto le permite procesar listas anidadas, lo que brinda mucha más flexibilidad que usar el
map
y el
filter
.
Aquí está la sintaxis para la inclusión de la lista:
[ expression(x) for x in aList if optional_condition(x) ]
Aquí hay un ejemplo:
print(list(map(add_func, aList))) print([x ** 2 for x in aList])
2. Trabajar con listas - listas circulares
Python le permite usar índices negativos al trabajar con listas. La siguiente comparación es verdadera:
aList[-1] == aList[len(aList)-1]
Esto hace posible, por ejemplo, obtener el segundo elemento del final de la lista utilizando la
aList[-2]
. Otros diseños similares son posibles.
Además, puede obtener una porción de la lista:
aList[start:end:step]
Aquí, el elemento inicial de la lista se incluye en el segmento resultante, y el elemento final no se incluye en él. Supongamos que la lista se ve así:
aList = [1, 2, 3, 4, 5, 6, 7, 8, 9]
El
aList[2:5]
se verá como
[2, 3, 4]
. Además, puede "voltear" la lista utilizando el
aList[::-1]
. En nuestro caso, esto dará
[9, 8, 7, 6, 5, 4, 3, 2, 1]
. Esta solución para la tarea de "voltear" de la lista me parece muy visual y exitosa.
También puede desempaquetar la lista colocando los valores almacenados en ella en variables separadas. O - "descomponiendo" sus valores en variables separadas y listas nuevas usando un asterisco:
a, b, c, d = aList[0:4] print(f'a = {a}, b = {b}, c = {c}, d = {d}')
3. zip y funciones de enumeración: crear potentes bucles
La función
zip
crea un iterador que combina los elementos de varias listas. Esto permite el rastreo paralelo de listas
for
bucles
for
y la clasificación paralela. Puede devolver los elementos combinados a su estado normal utilizando el operador
*
.
Aquí hay un ejemplo de cómo trabajar con la función
zip
:
numList = [0, 1, 2] engList = ['zero', 'one', 'two'] espList = ['cero', 'uno', 'dos'] print(list(zip(numList, engList, espList)))
Pero aquí se explica cómo devolver las listas a su estado normal:
Eng = list(zip(engList, espList, numList)) Eng.sort()
La función de
enumerate
, a primera vista, puede parecer muy complicada, pero si la maneja, resulta que puede ser útil en muchos casos. Este es un contador automático que a menudo se usa
for
bucles. Además, en tales ciclos no es necesario crear e incrementar una variable de contador usando construcciones como
counter = 0
y
counter += 1
.
Las funciones
zip
y
enumerate
son dos de las herramientas más poderosas utilizadas en la construcción
for
bucles:
upperCase = ['A', 'B', 'C', 'D', 'E', 'F'] lowerCase = ['a', 'b', 'c', 'd', 'e', 'f'] for i, (upper, lower) in enumerate(zip(upperCase, lowerCase), 1): print(f'{i}: {upper} and {lower}.')
4. Generadores: uso eficiente de la memoria
Los generadores se utilizan en los casos en que es necesario realizar ciertos cálculos que conducen a la aparición de un gran conjunto de resultados, pero al mismo tiempo es necesario evitar la asignación simultánea de memoria para almacenar todos esos resultados. En otras palabras, los generadores dan ciertos valores, como dicen, "sobre la marcha". Sin embargo, no almacenan en la memoria los valores encontrados previamente por ellos. Como resultado, la memoria se usa con moderación.
Los generadores se usan a menudo para leer archivos grandes o para crear secuencias infinitas usando la palabra clave de
yield
. A menudo me parece apropiado usarlos en mis proyectos de investigación.
def gen(n):
5. Entorno virtual - aislamiento de código
Si pudieras elegir solo una idea de este artículo que puedas recordar, entonces te aconsejaría sobre la que hablaremos en esta sección. Estamos hablando de entornos virtuales (entorno virtual).
Las aplicaciones de Python a menudo usan muchos paquetes diferentes. Fueron creados por diferentes desarrolladores, difieren en complejos conjuntos de dependencias. En una aplicación determinada, se puede usar una versión específica de una biblioteca determinada. Sin embargo, otra versión para dicha aplicación no funcionará. Pero, ¿qué pasa si varias aplicaciones usan diferentes versiones de la misma biblioteca? Esta es una pregunta difícil que nos lleva a la idea de que no existe un entorno universal, cuyos paquetes instalados son adecuados para absolutamente todas las aplicaciones. La respuesta a esta pregunta se puede llamar el uso de entornos virtuales.
Para crear entornos virtuales aislados entre sí, puede hacer esto:
conda create -n venv pip python=3.7
Resumen
En este artículo, hemos cubierto 5 funciones útiles de Python. Es decir, se trataba de inclusiones de listas, listas cíclicas, funciones
zip
y
enumerate
, generadores y entornos virtuales. Esperamos que estas características sean útiles.
Estimados lectores! Si pudieras decirle a un programador novato solo una característica de Python, ¿qué elegirías?
