Raúl Alejandro Fuentes Blanco
Carmen Sánchez Salgado
En este link, que alguien más compartió, también se usa la función zip. En la sección técnicas de iteración
Fredy Mendoza Vargas
Gracias por el aporte
Domina las comprehensions en Python para crear listas, diccionarios y sets de forma clara, compacta y eficiente. Aprende a filtrar números pares, unir listas con zip y eliminar duplicados con sets, aprovechando funciones globales como range y buenas prácticas de legibilidad. Además, compara rendimiento con time o timeit cuando lo necesites.
¿Qué son las comprehensions y por qué mejoran tu código?
Las comprehensions son un constructo para generar una secuencia a partir de otra secuencia. Permiten aplicar transformaciones y filtros de manera concisa y legible. En la práctica, reemplazan muchos for loops con una sola expresión y Python optimiza su ejecución internamente.
Habilidades clave: legibilidad en nombres de variables. Uso de operadores como el módulo (%). Aprovechar funciones globales como range y zip. Entender que la condición en una comprehension es opcional.
¿Cómo filtrar y transformar listas con list comprehension?
Para practicar, se parte de una lista de números creada con range: al usar range(100), los valores son del 0 al 99. El objetivo: quedarnos solo con los pares mediante una condición.
# Generar números del 0 al 99 lista_numeros = list(range(100)) # Filtrar pares con list comprehension pares = [numero for numero in lista_numeros if numero % 2 == 0] print(pares)
if numero % 2 == 0 filtra solo pares.numero.¿Cómo aplicar un filtro condicional y mantener legibilidad?
La estructura general es: [expresion for elemento in secuencia if condicion]. Aquí se aplica el operador módulo para verificar divisibilidad entre dos. Nombrar bien las variables facilita entender la intención y mantener el código claro.
¿Cómo crear diccionarios y sets con dictionary y set comprehension?
Más allá de listas, también puedes construir diccionarios y sets. Con diccionarios, une dos listas con zip. Con sets, elimina duplicados aprovechando que no aceptan repetidos.
¿Cómo unir dos listas con zip en un diccionario?
Se recomienda usar UID en lugar de ID (por ser palabra reservada) al nombrar identificadores. Con zip, emparejas IDs y nombres, y los conviertes en diccionario con una dictionary comprehension.
student_uid = [1, 2, 3] students = ["Juan", "José", "Larsen"] # Unir listas con zip y crear diccionario students_with_uid = {uid: student for uid, student in zip(student_uid, students)} print(students_with_uid) # {1: 'Juan', 2: 'José', 3: 'Larsen'}
uid. Valor: student.¿Cómo eliminar duplicados con un set comprehension?
Primero, genera números aleatorios con el módulo random usando un for loop y append. Luego, crea un set con una set comprehension para eliminar repetidos.
import random # Generar 10 números aleatorios entre 1 y 3 random_numbers = [] for i in range(10): random_numbers.append(random.randint(1, 3)) # Eliminar duplicados con set comprehension non_repeated = {number for number in random_numbers} print(random_numbers) print(non_repeated) # contiene solo valores únicos
¿Tienes otro caso de uso para comprehensions en tu día a día? Cuéntalo en los comentarios y probemos variantes juntos.
Raúl Alejandro Fuentes Blanco
Carmen Sánchez Salgado
En este link, que alguien más compartió, también se usa la función zip. En la sección técnicas de iteración
Fredy Mendoza Vargas
Gracias por el aporte
Facundo Nicolás García Martoni
ProfesorLes dejo un par de ejercicios para practicar las comprehensions de Python 👇🏼 --> https://www.practicepython.org/exercise/2014/03/19/07-list-comprehensions.html --> https://www.practicepython.org/exercise/2014/04/10/10-list-overlap-comprehensions.html
Juan Ernesto Soto Barbosa
Buenos ejercicios para practicar, muchas gracias
Omar Daniel Centeno
Excelente para amarrar los conocimientos
Néstor Iván Cepeda Munevar
Querida comunidad, ¿alguno recomienda un libro para aprender las mejores reglas de sintaxis y legibilidad para programadores en Python?
Carolina Boquín
ProfesorPuedes comenzar con esta guía de estilos de programación con Python (PEP-8):
Néstor Iván Cepeda Munevar
Gracias @CaroB!!!
Luis Fernando Cruz Carrillo
También se puede construir el diccionario así:
lst1 = [...] lst2=[...] myDict = dict(zip(lst1, lst2))
Nicolás Girado
y el set simplemente pasandole la función set a random_numbers
Noe Mikhael Huaccharaque Ruiz
código de la clase: Python comprehensions
<code> #iterating con comprehensions lista_de_numeros= list(range(100)) pares = [numero for numero in lista_de_numeros if numero & 2==0] #output# [0, 1, 2, 3, .........., 97 ,98 ,99] #create dict con comprehensions student_uid = [1,2,3] students = ['juan','jose','larse'] student_uid={uid: student for uid, student in zip (student_uid,students)} #output# {1:juan, 2:jose, 3: larse} #transform list to set con comprehensions import random random_numbers = [] for i in range(10): random_numbers.append(random.randint(1,3)) random_numbers #output#[1,2,3,1,2,2,2,3,2,2] non_repeated = {number for number in random_numbers} #outputt#{1,2,3} </code>
Juan Pablo Rodríguez Morales
Entiendo cuál es el punto al explicar el caso de los sets, pero hubiera sido más sencillo hacerlo así, ¿no?
non_repeated = set(random_numbers)
Supongo que los comprehensions sirven bastante para filtrar y transformar (como los filter, reduce y map en JS), excelente explicación igual :D
Cesar Hernández Ramírez
Exactly, es mejor como lo propones
Esteban Padilla
No sabia que este estructura tenia ese nombre y la hbia utilizado para resolver el reto del update client de platzi ventas
client_name_index= next((index for (index, client) in enumerate(clients) if client['name']==client_name),-1)
fidel angel ochoa
por que el -1? le restas 1 al index??
Martín Leyva
En el ejemplo de los pares esta es una de las formas de definir el conjunto de números pares en Teoría de Conjuntos, en este caso en el rango [ 0, 100)
NOTA: [ 0, 100) esta escrito así intencionalmente.
Definición:
pares = { x | x/2 es entero} que es equivalente a
pares = { x | x mod(2) =0} = { x | x % 2 =0}
si consideramos el rango [0, 100)
pares = { x | (x % 2 = 0) & ( x en [0, 99] ) }
NOTA: x cumple con las dos condiciones:
a) x % 2 = 0
b) x está en el rango (0, 100)
pares = { x |
Elvis Moreira
https://www.geeksforgeeks.org/comprehensions-in-python/ Les comparto una página que encontré para que puedan dar una revisión y hay un par de ejemplo de cada uno de los tres tipos de Comprehensions que se han brindado en la clase
andres neptaly meza vasquez
debiria explicar que es el zip, ahora se que regresa unas tuplas pero si deberia explicarlo a groso modo
Juan Ignacio Echenique Olsina
Por si a alguien le sirve a mi ayudo mucho como lo explican aca: https://www.youtube.com/watch?v=Z-8Khdd2BUQ Espero que les sea de ayuda.
Gabriel Vides
Siempre vienen bien las segundas explicaciones. A mi tambien me sirvio, gracias!
Adrián Andrés Sosa
Thanks!
Wilson Delgado
Información de zip: https://www.w3schools.com/python/ref_func_zip.asp
rodrigo Felipe Jara Duarte
Esta es la explicación mas sencilla y clara que me ha tocado ver de las Python comprehensions, muchas gracias por eso. <3
Sergio Andrés Herazo Cabarcas
Buenas noches, la función zip permite emparejar el primer elemento de cada iterador luego a los segundos elementos y así sucesivamente.
Yeison Andres Caballero Diaz
jajja no sabia del keyword id que no se podia usar y yo matandome con el ejercisio anterior jajja bueno cosas que pasan jeje
Francisco Javier Pecino Leon
Ya que estabamos con la clase de las comprehensions, en esta parte:
import random random_numbers = [] for i in range(10): random_numbers.append(random.randint(1,3))
se podria poner:
import random random_numbers = [] random_numbers.append(random.randint(1,3) for x in range(10))
Simón Alejandro Azócar C
En el Curso de Python Intermedio (dictado por Facundo), él explica con mejor detalle como funcionan las list comprehensions y dicts comprehensions
Miguel H. Martin Matiz
¡Qué poder de las compehensions! 😯. Les dejo esta web donde con un ejemplo comparan list comprehension vs For loop
"Usando list comprehension" h_letters = [] for letter in 'human': h_letters.append(letter) print(h_letters) >> ['h', 'u', 'm', 'a', 'n']
"Usando for loop" h_letters = [ letter for letter in 'human' ] print( h_letters) >> ['h', 'u', 'm', 'a', 'n']
No recuerdo si ya se había mencionado la función zip() en el curso, pero por si no se ha hecho, la función zip lo que hace es regresar un iterador de tuplas.
>>> x = [1, 2, 3] >>> y = [4, 5, 6] >>> zipped = zip(x, y) >>> list(zipped) [(1, 4), (2, 5), (3, 6)]