Cómo usar la comprensión de listas en Python
El uso oportuno de la comprensión de listas en Python puede facilitarle las operaciones de listas iterativas. Además de ser una sola línea, es más legible y se ejecuta de manera más eficiente.
Sin embargo, es posible que se ponga nervioso si no sabe cómo usarlo. Incluso puede ser más frustrante si no sabe dónde aplicarlo en su código. Aquí, le mostraremos cómo usar la comprensión de listas en Python con algunos ejemplos de la vida real.
¿Qué es la comprensión de listas en Python y cómo funciona?
Crear una lista de elementos con Python es fácil. Sin embargo, la tarea puede volverse un poco tediosa cuando necesita generar una lista de valores o elementos a partir de operaciones matemáticas o de cadenas. Es entonces cuando el uso de la comprensión de listas puede resultar útil.
Una ventaja de utilizar la comprensión de listas es que puede realizar varias operaciones en una sola lista.
Por el contrario, crea nuevos elementos y los agrega a una lista vacía que declara automáticamente. Entonces, en lugar de hacer una lista vacía manualmente y agregarle un bucle for , la comprensión de la lista de Python le permite hacer esto automáticamente sin que se preocupe por cómo llega la nueva lista.
El término "comprensión de lista" proviene del hecho de que todas las operaciones están en una lista de Python asignada a una variable nombrada. Como dijimos anteriormente, le permite realizar operaciones específicas en una sola línea de código. Luego agrega la salida a una nueva lista.
En última instancia, también puede utilizar la salida de una lista de comprensión para otros fines. Eso es porque apila expresiones en variables separadas. Para que pueda consultarlos más tarde.
Por ejemplo, es posible que esté raspando un sitio web con BeautifulSoup . Suponga que tiene la intención de obtener el nombre de todos los artículos y sus precios en el sitio web.
Luego, decide poner los datos extraídos en un archivo CSV o Excel. La práctica ideal es raspar el nombre de todos los artículos y sus precios y colocarlos en columnas separadas. Sin embargo, usar una lista de comprensión, en ese caso, asegura que tenga los datos raspados en variables dedicadas. Luego, puede convertir dichas variables en un DataFrame de Python más adelante.
Mira el ejemplo de abajo:
Products = [i.text for i in bs.find_all('name tags')]
Price = [i.text for i in bs.find_all('price tags')]
Una vez que obtenga las variables en bucle, puede colocarlas en columnas separadas en un DataFrame usando Pandas de Python.
Cómo crear y usar una comprensión de lista en Python
El bucle for es un iterador esencial en la comprensión de una lista. Generalmente, una lista de comprensión en Python toma este formato:
ComprehensionVariable = [expression for items in list]
Printing ComprehensionVariable genera el resultado del código anterior como una lista.
Sin embargo, tenga cuidado de no confundir la comprensión de una lista con un bucle abierto para .
Por ejemplo, usemos un bucle for abierto para obtener una lista de todos los múltiplos de tres entre 1 y 30:
myList = []
for i in range(1, 11):
myList.append(i * 3)
print(myList)
Output: [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
Para comparar los dos, hagamos lo mismo usando una lista de comprensión:
multiplesOf3 = [i*3 for i in range(1, 11)]
print(multiplesOf3)
Output = [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
También puede utilizar una lista de comprensión con declaraciones condicionales. El siguiente código de ejemplo imprime todos los números impares entre 1 y 10:
oddNumbers = [i for i in range(1, 11) if not i%2==2]
print(oddNumbers)
Output = [1, 3, 5, 7, 9]
Ahora, también reescribamos el código anterior usando un bucle for abierto:
myList = []
for i in range(1, 11):
if not i%2 == 0:
myList.append(i)
print(myList)
Output: [1, 3, 5, 7, 9]
Una lista de comprensión también acepta declaraciones if anidadas:
oddNumbers = [i for i in range(1, 11) if not i%2==0 if i<4]
print(oddNumbers)
Output: [1, 3]
También toma un bucle for anidado:
someNums = [[i*2 for i in range(1, 3)] for _ in range(4)]
print(someNums)
También puede tener un bucle for anidado simple en una lista de comprensión:
someNums = [i*2 for i in range(1, 3) for k in range(4)]
También puede manipular cadenas con la comprensión de listas de Python. Echemos un vistazo a la comprensión de un contador de palabras a continuación:
word = ["This is a python list comprehension tutorial"]
wordCounter = [i.count(' ') + 1 for i in word]
print(wordCounter)
Output: 7
Una lista de comprensión también puede aceptar una función que realiza una operación específica. Insertemos una función multiplicadora que obtenga números pares en una lista de comprensión para ver cómo funciona:
Numbers = [4, 7, 8, 15, 17, 10]
def multiplier(n):
multiple = n*2
return multiple
multipleEven = [multiplier(i) for i in Numbers if i%2==0]
print(multipleEven)
Output: [8, 16, 20]
Aún puede escribir el código anterior en una sola función sin usar la comprensión. Pero la comprensión de una lista es útil cuando necesita realizar varias iteraciones y colocar cada una de ellas en variables independientes.
Por ejemplo, puede realizar otra operación en ny tener una variable dedicada para ello. Modifiquemos la comprensión anterior para generar números pares a partir de impares:
multipleEvenFromOdds = [multiplier(i) for i in Numbers if not i%2==0]
print(multipleEvenFromOdds)
Output: [14, 30, 34]
Diccionario y comprensiones de conjuntos
Además de una lista de comprensión, Python también ofrece un diccionario y una funcionalidad de comprensión establecida.
Eche un vistazo al ejemplo de comprensión del diccionario a continuación para ver cómo funciona:
corresponding = {i: i*2 for i in range(10) if not i%2==0}
print(corr)
Output: {1: 2, 3: 6, 5: 10, 7: 14, 9: 18}
El código anterior recorre la lista de números entre 1 y 9 y los convierte en claves. Luego le dice a Python que multiplique cada clave por dos. Finalmente, presenta los resultados de esa operación como los valores correspondientes para cada clave en la matriz resultante.
Una comprensión de conjuntos es un poco similar a una comprensión de listas. A continuación, se muestra un ejemplo de una comprensión de conjuntos:
numbers = {i**(2) for i in range(10) if i%4==0}
print(numbers)
Output: {0, 16, 64}
Sin embargo, a diferencia de la comprensión de listas, la comprensión de conjuntos elimina los duplicados:
nums = {i for i in range(20) if i%2==1 for k in range(10) if k%2==1}
print(nums)
Output: {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}
Puede probar el código anterior usando una lista de comprensión para ver en qué se diferencian.
¿Puede utilizar la comprensión de listas en todo momento?
Hemos echado un vistazo a diferentes ejemplos de comprensión de listas y dónde puede usarlos. Sin embargo, como cualquier otro método de Python, el caso de uso de una lista de comprensión depende del problema específico que desea resolver. Por lo tanto, solo debe usarlo si es ideal para el problema específico que desea resolver.
Uno de los propósitos de la comprensión de listas es simplificar su código y hacerlo más legible. Por lo tanto, asegúrese de evitar la complejidad al lidiar con él. Por ejemplo, una comprensión larga de Python puede volverse compleja de leer. Eso frustra su propósito.