Muy bien, así que en el último video, hablamos sobre los dos desafíos, pero realmente no expliqué en detalle
cuáles eran.
Entonces, el primer archivo challenge1. py, recuerda que
puedes obtener eso de la sección de recursos del último video.
El desafío para el primero es reescribir el siguiente código para utilizar una lista de comprensión, en lugar de un bucle
for, y puede ver el bucle for en las líneas 10 y 11.
Ahora debe agregar su solución debajo del ciclo, de modo que la lista resultante se imprima debajo de la
salida, para que sea más fácil verificar que está produciendo exactamente la misma lista y evita ingresar el texto de
entrada dos veces.
Básicamente, vamos a hacer eso.
Así que vamos a ver eso primero.
Y puede ver que aquí tenemos un comentario útil para
decir que escriba su solución aquí, y ahí es exactamente donde vamos a comenzar a escribirla.
Y, por cierto, mencioné aquí que también podría ser útil almacenar las palabras originales
en una lista.
El bucle for se vería así; aquí abajo
puedes ver el ejemplo de eso
y notar los paréntesis adicionales para que obtengamos tuplas en la lista. Puedes ver los paréntesis adicionales allí en
la línea 23. Pero llegaremos a eso en breve.
Vamos a hacer esto primero primero.
Entonces, para la primera parte, nuestra comprensión iterará sobre la lista que se produce al dividir el
texto de entrada.
Ahora queremos la longitud de cada
palabra, por lo que la comprensión utilizará la función len para eso. Así que vamos a escribir el código y podemos
ver cómo lo hacemos.
Así que voy a comenzar en la línea 16, la respuesta es igual a, corchetes izquierdo y
derecho porque es una comprensión, una comprensión de lista, len paréntesis x para x en paréntesis de puntos de texto.
Luego, en la línea siguiente, podemos imprimir las respuestas entre paréntesis, o la respuesta que debo decir.
Básicamente, queremos que la longitud de cada palabra y la comprensión se utilicen con la función len x, como puede ver en
la línea 16, igual que el bucle for. Nada único allí.
Entonces, ejecutemos el programa para asegurarnos de que funcione.
Y obviamente, también veremos la versión for loop.
Ahora para el texto, vamos a ir con ¿Qué han hecho los
romanos por nosotros?
Entonces puede ver que tenemos la misma salida tanto para el bucle for como para la comprensión.
Entonces ese es un buen comienzo.
Ahora, para esta segunda parte del desafío, mencioné que también podría ser útil almacenar las palabras
originales en la lista.
Ahora el bucle for se parecería al ejemplo que puede ver allí con los paréntesis adicionales, de modo que obtengamos
tuplas en la lista.
Y obviamente, va a escribir su comprensión correspondiente aquí abajo, comenzando en la línea 29.
Básicamente, queremos una tupla que contenga la palabra original y su longitud.
Sigamos adelante y escriba una respuesta a eso.
Y comenzaremos este en la línea 30: la respuesta es igual a los corchetes izquierdo y derecho, paréntesis x espacio de comas entre
paréntesis izquierdo y derecho, x luego tenemos dos paréntesis de cierre como se puede decir allí, luego 4 x en punto de
texto entre paréntesis. Luego imprimiremos la
respuesta en la siguiente línea, imprimiremos la respuesta entre paréntesis. Básicamente, estamos produciendo una tupla que contiene la palabra y su longitud.
Y lo que haré es, solo voy a copiar exactamente la misma salida que escribimos aquí. Ejecute el código, y una vez más, puede ver que nuestra
comprensión produce la misma lista que el ciclo for original. Convertir un bucle for en una comprensión es
bastante sencillo, y son una adición muy útil a su kit de herramientas de
programación.
Ahora, antes de pasar a la solución para el segundo desafío, hay un par de cosas que
decir sobre este.
Ahora lo primero es que probablemente no queremos duplicados. En otras palabras, si la misma palabra aparece más de una
vez en la
entrada, no tiene sentido contarla dos veces.
Entonces, para evitar
eso, lo que podríamos hacer es utilizar una comprensión establecida.
Ahora ya hemos visto cómo hacerlo, para convertir una comprensión de lista en una comprensión establecida.
Simplemente reemplazamos los corchetes con llaves.
Así que sigamos
adelante y hagamos eso, y ejecutemos eso. Ahora voy a proporcionar una cadena de entrada diferente
aquí, así que tenemos algunas palabras duplicadas.
Entonces el texto de entrada contiene palabras repetidas en la entrada.
OK, guárdelo, y puede ver en este ejemplo aquí abajo, nos devuelve un conjunto, y dado que
los conjuntos no contienen duplicados, obtenemos cada palabra solo una vez.
Ahora tenga en cuenta que las palabras no necesariamente aparecen en orden.
De hecho, definitivamente no están en orden como puede ver aquí. Tenemos la palabra 'contiene' aquí, c está después de la
letra r alfabéticamente, y eso es porque, por definición, no hay ordenamiento en un conjunto.
Ahora probablemente harás esto para producir algún tipo de métrica, como una longitud de palabra promedio, por
ejemplo, y por lo tanto el orden no sería importante.
Ahora, cuando esté considerando usar una
comprensión, recuerde que las comprensiones establecidas también pueden ser bastante útiles.
Funcionan igual que las comprensiones de listas y pueden ser muy útiles para evitar duplicados.
Bien, entonces lo siguiente no es realmente un problema con las comprensiones.
Tiene que ver con la forma en que funciona la división.
Entonces dividimos nuestro texto para obtener palabras, y
funciona bien siempre que cada palabra esté separada de la siguiente con espacios en blanco: espacios en blanco, tabuladores de espacio y los nuevos caracteres de
línea, aunque no podemos ingresar saltos de línea en la entrada. Ahora, para ver a qué me refiero,
volvamos a ejecutar el programa y usemos algunos signos de puntuación.
Así que esta vez
vamos a ingresar. ¿Qué han hecho ellos, la coma de los romanos?
¿Alguna vez han hecho por nosotros? Ahora el programa todavía funciona, pero ahora muestran, por ejemplo, la palabra
'ellos' aquí, como de longitud cinco, cinco caracteres, y eso se debe a la coma después de la palabra 'ellos'.
También tenemos 'Romanos' que muestran un siete, y 'nosotros' incluso tenemos tres aquí, y eso se debe al signo
de interrogación.
Ahora estoy mencionando esto porque podemos usar una comprensión anidada para arreglarlo.
Recuerde el problema, y volveremos a él cuando veamos más tarde las comprensiones de anidamiento.
Bien, ese es el primer desafío.
Voy a cerrar ese desafío1. py ahora.
Entonces, el segundo desafío, tuvimos que crear una lista de comprensión para convertir una tupla de pulgadas a centímetros.
Y solo como una nota aquí, en caso de que no sea obvio, una comprensión de la lista produce una lista, pero no
es necesario darle una lista para repetirla.
Ahora puede usar una comprensión de lista con cualquier tipo iterable.
Así que vamos a escribir una comprensión aquí, ese fue su desafío, para
convertir dimensiones de pulgadas a centímetros.
Ahora nuestras dimensiones serán reemplazadas por tuplas para la longitud, el ancho y la altura, y como recordatorio son 2. 5 4 centímetros a
1 pulgada.
Y luego aquí abajo, una vez que tenga los valores correctos, cambie el código para producir una tupla en
lugar de una lista.
Bien, entonces tenemos nuestro código allí imprimiendo la medición, y nuevamente en caso de que no sea obvio, una comprensión
de la lista produce una lista, pero no es necesario que se le dé la lista para repetirla, esa es la
parte importante.
Y esa es realmente la razón por la que realmente creé este desafío en primer lugar,
realmente solo para demostrar que una comprensión puede usar cualquier tipo o secuencia iterable.
No tiene que proporcionar una lista para comprender la lista. Entonces, la lista, o conjunto, en la comprensión de
la lista se refiere al tipo de objeto producido por la comprensión. Bien, entonces tenemos el valor aquí, así que en la
línea 13, ingresemos ahora a nuestra comprensión. Voy a eliminar ese código allí entre
corchetes, y
vamos a ir con la pulgada multiplicada por dos puntos cinco cuatro por pulgada en pulgadas de subrayado.
Dejaré el código para imprimir la medida de subrayado en cm.
Entonces, la comprensión itera sobre cada elemento de la tupla, y lo multiplica por el número de centímetros en
una pulgada, dos punto cinco cuatro.
Así que vamos a ejecutar esto para confirmar que funciona.
Y pueden ver que tenemos correctamente los valores allí,
siete puntos seis dos, veinte puntos tres dos y cincuenta puntos ocho. Bien, ahora nuestra siguiente parte aquí,
necesitamos convertir el código para producir una tupla en lugar de una lista.
Todo lo que tenemos que hacer es analizar la comprensión de la función tupla para que funcione.
Entonces agreguemos el código allí para hacer eso. Ahora la línea 18, haremos una medición de subrayado en cm igual a tupla, luego queremos
paréntesis, luego debemos agregar la comprensión de la lista a la llamada de tupla. Entonces, entre corchetes de izquierda a
derecha, será
-
ahora podría pegar ese código, pero lo escribiré rápidamente - pulgada por dos punto
cinco cuatro, por pulgada en pulgada de subrayado. Y luego, en la última línea,
imprimiremos cm_measurement nuevamente.
Básicamente, esta llamada aquí en la línea 18 está convirtiendo una tupla de valores en una unidad, pulgadas aquí,
en una tupla equivalente usando otro conjunto de unidades, centímetros.
Y creo que eso es bastante impresionante para una línea de
código, pero en realidad solo lo ejecutamos para asegurarnos de que obtengamos los resultados correctos.
Ahora tenemos los mismos resultados en una tupla.
Muy bien, entonces voy a detener el video aquí. En el siguiente, veremos cómo agregar condiciones a nuestras comprensiones.
Así que nos vemos en el próximo video.