List comprehensions
Clase 8 de 21 • Curso de Python Intermedio: Comprehensions, Lambdas y Manejo de Errores
Contenido del curso
Clase 8 de 21 • Curso de Python Intermedio: Comprehensions, Lambdas y Manejo de Errores
Contenido del curso
Enrique Emanuel Martínez Saénz
Usuario anónimo
Christian Sanclemente
Aaron Contreras Garibay
Pablo .
Diesan Romero
Andres López
Nicolás Peralta Páez
Rafael Fernando Gonzalez
Andrea Matiz
Youssef Abarca
Miguel Andres Rendon Reyes
Arles A. Pinzon Molina
Moisés Manuel Morín Hevia
Francisco Aquino La Rosa
Sebastian Alejandro Gómez Ardila
Wilford Giuseppe Camargo Quesada
Víctor H. Torres
Carlos Fernando Aguilar González
Carlos José González Juan
Moisés Manuel Morín Hevia
Carlos José González Juan
Andres Valencia
Andres Geovani Salamanca Martinez
Wilson Fernando Antury Torres
Miguel Fernández
CRISTIAN BARBERO PÉREZ
David Santiago Diaz
Enzo Venturi
Juan Pablo Cuenca Ludeña
Darío Castillo
Andres Condezo Monge
Eunel Antonio Camacho Luján
Jesús Zelaya Contreras
Usuario anónimo
Ernesto Ormeño
Renzo Tincopa Barreto
Omar Daniel Centeno
Juan Antonio Aramburo Pasapera
Jhina Rivera
Moisés Manuel Morín Hevia
César Velandia
solo uso el 36 por que es el numero multiplo de 4, 6 y 9 al mismo tiempo.
squares = [ i for i in range(1, 100000) if i % 36 == 0] print(squares)
Una muy buena forma de simplificar ! ... de verdad que es super eficiente y no se escribe tanto código ... lo comprobé y da exactamente lo mismo que cómo yo lo hice escribiendo más condiciones ... Mis felicitaciones por dar con ese razonamiento y sobre todo explicar el porqué .. ya lo había leído en anteriores aportes pero no llegaba a entender el porqué ...
Muy bien planteado! para los que se preguntan si las matemáticas son importantes en la programación, aquí está un ejemplo claro. Encontrando el mínimo común múltiplo, se llega a esta conclusión y logra hacer un código mucho mas sencillo. . Excelente.
!list comprehension
Esta entrada es útil para seguir profundizando e interiorizando.
all-about-python-list-comprehension
Excelente aporte. El enlace resuelve varias dudas que tenías de los for e if anidados. Sabía como funcionaban pero no el "por qué". Jaja Gracias
Maestro!!
Mi solución al reto de la clase:
challenge = [i for i in range(1, 100000) if i % 4 == 0 and i % 6 == 0 and i % 9 == 0] print(challenge)
I did just the same!
Gracias por el aporte, muy buen trabajo :)
def run(): number = [i for i in range(1, 100000) if i % 36 == 0] # number = [i for i in range(1,100000) if (i % 4 == 0 and i % 6 == 0 and i % 9 == 0)] print(number) if __name__ == '__main__': run()
Yo hice lo mismo encontrar el MCM para solo usar una condición
Que buena jugada xD
🤡 = Mi cara cuando Facundo hace en 1 línea lo que me maté haciendo en 6 con list comprehensions.
hahaha
x2
Saludos! ... mi aporte
def run(): squares = [i for i in range(1,1000000) if i%36==0 and len(str(i))<6] print(squares) if __name__=='__main__': run()
Muy buena esta solución
Hola ZapColco, no es necesario la función len, porque al usar range(1, 100000) ya garantiza que la fuente de datos a utilizar no supere los 5 dígitos.
mi codigo:
lista3 = [i for i in range(1, 100000) if i % 4 == 0 and i % 6 == 0 and i % 9 == 0] print (lista3)
buena línea.
Gracias
Puede ser mi impresión inicial, pero percibo que esta técnica hace que el código sea menos legible, hasta la forma de nombrarlo no sigue el estándar de izquierda a derecha. Claro que ahorra espacio y el código se puede ver "más elegante", pero uno de los principios del Zen que vimos al principio dice que "es mejor más largo pero más legible". Seguro me acostumbraré.
me imagino que en algunos casos particulares se usara de mejor modo y siendo mas legible,pero por ejemplo en el reto que colo el profe queda poco legible
Solución al reto:
>>> solution = [ i for i in range(1,10000) if i % 4 == 0 and i % 6 == 0 and i % 9 == 0 ] >>> solution [36, 72, 108, 144, 180, 216, 252, 288, 324, 360, 396, 432, 468, 504, 540, 576, 612, 648, 684, 720, 756, 792, 828, 864, 900, 936, 972, 1008, 1044, 1080, 1116, 1152, 1188, 1224, 1260, 1296, 1332, 1368, 1404, 1440, 1476, 1512, 1548, 1584, 1620, 1656, 1692, 1728, 1764, 1800, 1836, 1872, 1908, 1944, 1980, 2016, 2052, 2088, 2124, 2160, 2196, 2232, 2268, 2304, 2340, 2376, 2412, 2448, 2484, 2520, 2556, 2592, 2628, 2664, 2700, 2736, 2772, 2808, 2844, 2880, 2916, 2952, 2988, 3024, 3060, 3096, 3132, 3168, 3204, 3240, 3276, 3312, 3348, 3384, 3420, 3456, 3492, 3528, 3564, 3600, 3636, 3672, 3708, 3744, 3780, 3816, 3852, 3888, 3924, 3960, 3996, 4032, 4068, 4104, 4140, 4176, 4212, 4248, 4284, 4320, 4356, 4392, 4428, 4464, 4500, 4536, 4572, 4608, 4644, 4680, 4716, 4752, 4788, 4824, 4860, 4896, 4932, 4968, 5004, 5040, 5076, 5112, 5148, 5184, 5220, 5256, 5292, 5328, 5364, 5400, 5436, 5472, 5508, 5544, 5580, 5616, 5652, 5688, 5724, 5760, 5796, 5832, 5868, 5904, 5940, 5976, 6012, 6048, 6084, 6120, 6156, 6192, 6228, 6264, 6300, 6336, 6372, 6408, 6444, 6480, 6516, 6552, 6588, 6624, 6660, 6696, 6732, 6768, 6804, 6840, 6876, 6912, 6948, 6984, 7020, 7056, 7092, 7128, 7164, 7200, 7236, 7272, 7308, 7344, 7380, 7416, 7452, 7488, 7524, 7560, 7596, 7632, 7668, 7704, 7740, 7776, 7812, 7848, 7884, 7920, 7956, 7992, 8028, 8064, 8100, 8136, 8172, 8208, 8244, 8280, 8316, 8352, 8388, 8424, 8460, 8496, 8532, 8568, 8604, 8640, 8676, 8712, 8748, 8784, 8820, 8856, 8892, 8928, 8964, 9000, 9036, 9072, 9108, 9144, 9180, 9216, 9252, 9288, 9324, 9360, 9396, 9432, 9468, 9504, 9540, 9576, 9612, 9648, 9684, 9720, 9756, 9792, 9828, 9864, 9900, 9936, 9972]```
Cómo se pueden comentar varias líneas a la vez?
Si estás utilizando VS Code las seleccionas y pulsas Ctrl K + Ctrl C
Hola ✌ Te comparto los siguientes enlaces donde explican las maneras de comentar en Python:
👉 Cómo hacer comentarios en Python
👉 Comentarios en Python
Espero haberte ayudado. 😉
¿Cómo hiciste el gif?
Simplificando (mínimo común múltiplo ) y usando el parámetro step de la función range, podemos resumir el reto en una sola linea de código.
print ([x for x in range(36,36,1000000)])
Elegante, pero creo que debería ser: print([x for x in range(36,1000000, 36)])
def run(): # Dicho por Enrique Emanuel Martínez Saénz solo uso el 36 # por que es el numero multiplo de 4, 6 y 9 al mismo tiempo. # minimo comun multiplo mcm = 36 # numero maximo de iteraciones considerando el requerimiento para 5 nmi = mcm * 5 + 1 # La simplificacion elegante por Dario Castillo esta genial squares = [ i for i in range(mcm, nmi, mcm) ] print(squares) if __name__ == "__main__": run()
Para los que han visto teoría de conjuntos, podemos hacer una analogía al concepto de List Comprenhensions con la definición de Conjunto por comprensión, que es donde se tiene que especificar que condiciones cumplen los elementos de un conjunto y no es necesario mencionar uno por uno.
👾 Generando los primeros 100 números impares usando List comprehensions.
def run(): list_numbers = [i for i in range(100 * 2) if i % 2 != 0] print(list_numbers) if __name__ == '__main__': run()
El código de forma extendida, se escribiría así:
def challenge(): list_multiples = [number for number in range(1, 100000) if (number % 4 == 0 and number % 6 == 0 and number % 9 == 0)] print(list_multiples)
Esto se puede reducir a lo siguiente:
def challenge(): list_multiples = [number for number in range(1, 100000) if (number % 4 + number % 6 + number % 9) == 0] print(list_multiples)
Finalmente, la forma más simplificada sería así:
def challenge(): list_multiples = [number for number in range(1, 100000) if number % 36 == 0] print(list_multiples)
porqué no hay un botón de "me gusta" en las clases??? que chévere esta clase
Hola Renzo!
List comprehensions son lo máximo jajaja
Puedes escribir a team@platzi.com para sugerir que agreguen un botón de me gusta a la plataforma, siempre están recibiendo el feedback de los estudiantes para mejorar el contenido.
¡Saludos!
Yo lo hice así
reto = [i for i in range(1,100000) if (i%4 + i%6 + i%9) == 0]
Utiicé la suma en lugar de "and"s porque me pareció que se ee mejor.
Mi solución:
print([i for i in range(1, 10000) if i % 4 == 0 and i % 6 == 0 and i % 9 == 0])
excelente solución.
Yo creé una función para la condición
def run(): multiple_four = [num for num in range(1, 100000) if condition(num)] print(multiple_four) def condition(num): return num % 4 == 0 and num % 6 == 0 and num % 9 == 0 if __name__ == '__main__': run()