10 Trucos de Python para dioses Python

Aunque en la superficie Python puede parecer un lenguaje de simplicidad que cualquiera puede aprender, y lo es, muchos podrían sorprenderse al saber cuánta maestría se puede obtener en el lenguaje. Python es una de esas cosas que es bastante fácil de aprender, pero puede ser difícil de dominar. En Python, a menudo hay varias maneras de hacer las cosas, pero puede ser fácil hacer algo incorrecto, o reinventar la biblioteca estándar y perder tiempo simplemente porque no eras consciente de la existencia de un módulo.

Desafortunadamente, la biblioteca estándar de Python es una bestia bastante vasta, y además, su ecosistema es absolutamente aterradoramente enorme. Aunque probablemente hay dos millones de gigabytes de módulos python, hay algunos consejos útiles que puede aprender con la biblioteca estándar y los paquetes generalmente asociados con la computación científica en Python.

No1: Invertir una cadena

Aunque pueda parecer bastante básico, invertir una cadena con bucle de caracteres puede ser bastante tedioso y molesto. Afortunadamente, Python incluye una operación integrada fácil para realizar exactamente esta tarea. Para ello, simplemente accedemos a la indice ::-1 en nuestra cadena.
a = "!dlrow olleH"
backward = a[::-1]

No2: Dims como variables

En la mayoría de los idiomas, con el fin de obtener una matriz en un conjunto de variables, tendríamos que recorrer los valores de forma iterativa o acceder a los dims por posición de esta manera:
firstdim = array[1]
En Python, sin embargo, hay una manera más fresca y rápida de hacerlo. Para cambiar una lista de valores en variables, simplemente podemos establecer nombres de variables iguales a la matriz con la misma longitud de la matriz:
array = [5, 10, 15, 20]
five, ten, fift, twent = array

No3: Itertools

Si vas a pasar cualquier tiempo en Python, definitivamente querrás familiarizarte con itertools. Itertools es un módulo dentro de la biblioteca estándar que le permitirá moverse constantemente por iteración. No solo hace que sea mucho más fácil codificar bucles complejos, sino que también hace que el código sea más rápido y conciso. Aquí está sólo un ejemplo de un uso para Itertools, pero hay cientos:
c = [[1, 2], [3, 4], [5, 6]]
# Let's convert this matrix to a 1 dimensional list.
import itertools as it
newlist = list(it.chain.from_iterable(c))

No4: Desembalaje inteligente

Desempaquetar valores iterativamente puede ser bastante intensivo y lento. Afortunadamente, Python tiene varias maneras interesantes en las que podemos desempaquetar listas! Un ejemplo de esto es el *, que rellenará los valores sin asignar y los agregará a una nueva lista bajo nuestro nombre de variable.
a, *b, c = [1, 2, 3, 4, 5]

No5: Enumerar

Si no está al tanto de enumerar, probablemente debería familiarizarse con él. Enumerar le permitirá obtener índices de ciertos valores en una lista. Esto es especialmente útil en ciencia de datos cuando se trabaja con matrices en lugar de marcos de datos.
for i,w in enumerate(array):
print(i,w)

№6: Name Slices

Slicing apart lists in Python is incredibly easy! There are all sorts of great tools that can be used for this, but one that certainly is valuable is the ability to name slices of your list. This is especially useful for linear algebra in Python.
a = [0, 1, 2, 3, 4, 5]
LASTTHREE = slice(-3, None)
slice(-3, None, None)
print(a[LASTTHREE])

№7: Group Adjacent Lists

Grouping adjacent loops could certainly be done rather easily in a for loop, especially by using zip(), but this is certainly not the best way of doing things. To make things a bit easier and faster, we can write a lambda expression with zip that will group our adjacent lists like so:
a = [1, 2, 3, 4, 5, 6]  
group_adjacent = lambda a, k: zip(*([iter(a)] * k))
group_adjacent(a, 3) [(1, 2, 3), (4, 5, 6)]
group_adjacent(a, 2) [(1, 2), (3, 4), (5, 6)]
group_adjacent(a, 1)

№8: next() iteration for generators

In most normal scenarios in programming, we can access an indice and get our position number by using a counter, which will just be a value that is added to:
array1 = [5, 10, 15, 20]
array2 = (x ** 2 for x in range(10))
counter = 0
for i in array1:# This code wouldn't work because 'i' is not in array2.
# i = array2[i]
i = array2[counter]
# ^^^ This code would because we are accessing the position of i
En lugar de esto, sin embargo, podemos usar next(). A continuación toma un iterador que almacenará nuestra posición actual en la memoria y iterará a través de nuestra lista en segundo plano.
g = (x ** 2 for x in range(10))
print(next(g))
print(next(g))

No9: Contador

Otro gran módulo de la biblioteca estándar son las colecciones, y lo que me gustaría presentarles hoy es Counter de colecciones. Usando Counter, podemos obtener fácilmente los recuentos de una lista. Esto es útil para obtener el número total de valores en nuestros datos, obtener un recuento nulo de nuestros datos y ver los valores únicos de nuestros datos. Sé lo que estás pensando,
“¿Por qué no usar Pandas?”
Y este es sin duda un punto válido. Sin embargo, el uso de Pandas para esto sin duda va a ser mucho más difícil de automatizar, y es sólo otra dependencia que vas a necesitar añadir a tu entorno virtual cada vez que despliegues tu algoritmo. Además, un tipo de contador en Python tiene muchas características que Pandas Series no tiene, lo que puede hacerlo mucho más útil para ciertas situaciones.
A = collections.Counter([1, 1, 2, 2, 3, 3, 3, 3, 4, 5, 6, 7]) 
A Counter({3: 4, 1: 2, 2: 2, 4: 1, 5: 1, 6: 1, 7: 1})
A.most_common(1) [(3, 4)]
A.most_common(3) [(3, 4), (1, 2), (2, 2)]

No10: Dequeue

Otra gran cosa que sale del módulo de colecciones es la cola. Echa un vistazo a todas las cosas ordenadas que podemos hacer con este tipo!
import collections
Q = collections.deque()
Q.append(1)
Q.appendleft(2)
Q.extend([3, 4])
Q.extendleft([5, 6])
Q.pop()
Q.popleft()
Q.rotate(3)
Q.rotate(-3)
print(Q)


Conclusión

Así que ahí lo tienes, estos son algunos de mis trucos favoritos de Python que uso todo el tiempo. Aunque algunos de estos podrían ser utilizados un poco más raramente, estos trucos tienden a ser muy versátiles y útiles. Afortunadamente, la caja de herramientas de Python de las funciones de la biblioteca estándar ciertamente no comienza a quedar desnuda allí, y ciertamente hay más herramientas dentro de ella. Es más que probable que haya algunos que ni siquiera conozco, ¡así que siempre hay algo que aprender que es emocionante!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Más info

aceptar