Correcto, as que en el ltimo video, hablamos sobre los dos desafos, pero realmente no expliqu en
detalle qu eran.
Entonces, el primer archivo challenge1. py, recuerda que
puedes obtenerlo de la seccin de recursos del ltimo video.
El desafo para el primero es volver a escribir el siguiente cdigo para usar una lista de comprensin en lugar de
un ciclo for, y puede ver el ciclo for en las lneas 10 y 11.
su solucin debajo del bucle para que la lista resultante se imprima debajo de la salida, por lo que
es ms fcil comprobar que est produciendo exactamente la misma lista y evita ingresar el texto de entrada dos veces.
Ahora necesita agregar
Entonces, bsicamente, vamos a hacer eso.
As que sigamos adelante y miremos eso primero.
Y puede ver que hemos obtenido un comentario aqu para
decir su solucin aqu, y ah es exactamente donde vamos a comenzar a escribirla.
Y, por cierto, mencion aqu que tambin podra ser til almacenar las palabras originales
en una lista.
El bucle for se vera as.
Aqu puede ver el ejemplo de eso, y
observe los parntesis adicionales para que podamos obtener tuplas en la lista. Puedes ver los parntesis adicionales all en
la lnea 23. Pero llegaremos a eso en breve.
Vamos a hacer esto primero primero.
Entonces, para la primera parte, nuestra comprensin iterar sobre la lista que se produce dividiendo el
texto de entrada.
Ahora queremos la longitud de cada palabra,
por lo que las comprensiones van a usar la funcin len para eso. cdigo y podemos ver cmo lo hacemos.
As que digitemos el
As que voy a comenzar en la lnea 16, la respuesta es igual a, corchetes izquierdos y derechos
porque es una comprensin, una lista de comprensin, len parntesis x para x en parntesis de divisin de puntos de texto.
Luego, en la lnea siguiente, podemos imprimir las respuestas entre parntesis, o responder, debera decir.
Entonces, bsicamente, queremos que la longitud de cada palabra y las comprensiones que utilizan la funcin len x, como se puede ver en la
lnea 16, sean las mismas que para for loop. Nada nico all.
Entonces, ejecutemos el programa para asegurarnos de que funciona.
Y, obviamente, tambin veremos la ejecucin de la versin for loop.
Ahora, para el texto, vamos a ir. Qu han hecho los
romanos por nosotros?
Entonces, pueden ver que tenemos el mismo resultado para el bucle for y tambin para la comprensin.
Entonces ese es un buen comienzo.
Ahora para esta segunda parte del desafo, mencion que podra ser til almacenar las palabras
originales en la lista tambin.
Ahora el bucle for se vera como el ejemplo que puede ver all con los parntesis adicionales, de modo que
obtengamos tuplas en la lista.
Y obviamente vas a escribir tu comprensin correspondiente aqu abajo, de pie en la lnea 29.
Entonces, bsicamente, queremos una tupla que contenga la palabra original y su longitud.
Sigamos adelante y escriba una respuesta a eso.
Y comenzaremos este en la lnea 30, la respuesta es igual a corchetes izquierdos y derechos, parntesis x espacio de coma len
izquierdo y parntesis derecho, x luego tenemos dos parntesis de cierre como se puede decir all, luego 4 x en texto
punto parntesis de divisin. Luego, imprimiremos la respuesta
en la siguiente lnea, imprimiremos la respuesta entre parntesis. Lo mejor es que estamos produciendo una tupla que contiene la palabra y su longitud.
ingres aqu, ejecutar el cdigo, y una vez ms puedes ver que nuestra comprensin produce la misma lista que el bucle original de.
Y lo que har es copiar exactamente la misma salida que La conversin de un bucle for a una comprensin
es bastante sencillo, y son una adicin muy til a su kit de herramientas
de programacin.
Ahora, antes de pasar a la solucin del segundo desafo, hay un par de cosas
que decir sobre este.
Ahora que el primero es, probablemente no queremos duplicados. En otras palabras, si la misma palabra aparece ms de
una vez en
la entrada, no tiene sentido contarla dos veces.
Entonces, para evitar eso, lo
que podramos hacer es usar una comprensin de conjuntos en su lugar.
Ahora ya hemos visto cmo hacerlo, para convertir una comprensin de lista en una comprensin establecida.
Simplemente reemplazamos los corchetes con llaves.
Entonces sigamos y
hagamos eso, y corramos 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.
De acuerdo, gurdelo, y puede ver en este ejemplo aqu abajo, obtenemos un conjunto devuelto, y
como 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 estn en orden como puedes ver aqu. Aqu tenemos la palabra 'contiene', c es despus de la letra
r alfabticamente, y eso es porque, por definicin, no hay orden en un conjunto.
Ahora es probable que est haciendo esto para producir algn tipo de mtrica, como una longitud
de palabra promedio, por lo que el orden no sera importante.
comprensiones establecidas tambin pueden ser bastante tiles.
Ahora, cuando est considerando usar una comprensin, recuerde que las
Funcionan igual que las listas de comprensin y pueden ser muy tiles para evitar duplicados.
OK, entonces lo siguiente no es realmente un problema con las comprensiones.
Tiene que ver con la forma en que funciona la divisin.
As que 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, pestaas espaciales y los nuevos caracteres de
lnea, aunque no podemos ingresar saltos de lnea en la entrada. Ahora, para ver lo que quiero decir,
ejecutemos el programa nuevamente y usemos algunos signos de puntuacin.
As que esta vez vamos a entrar Qu
tienen ellos? Comma, la coma de los romanos alguna vez hizo por nosotros, alguna vez hecho por nosotros
con un signo de interrogacin al final, entrar. Ahora el programa an funciona, pero ahora muestran, por ejemplo, la palabra 'ellos'
aqu, como de longitud cinco, cinco caracteres, y eso se debe a la coma despus de la palabra 'ellos'.
Tambin tenemos a 'Romanos' mostrando un siete tambin, y 'nosotros' incluso tenemos tres aqu, y eso se debe al
signo de interrogacin.
Ahora lo menciono porque podemos usar una comprensin anidada para solucionarlo.
Recuerde el problema, y volveremos a l cuando veamos las comprensiones de anidacin ms adelante.
Bien,
ese es el primer desafo. Voy a cerrar ese desafo1. py ahora
Entonces, el segundo desafo, tuvimos que crear una lista de comprensin para convertir una tupla de pulgadas a centmetros.
Y justo como una nota aqu en caso de que no sea obvio, una lista de comprensin produce una lista, pero
no tiene que darse una lista para repetir.
Ahora puede usar una lista de comprensin con cualquier tipo iterable.
Entonces, vamos a escribir una comprensin aqu, ese fue su desafo, convertir
las dimensiones de pulgadas a centmetros.
Ahora nuestras dimensiones sern reemplazadas por tuplas para la longitud, el ancho y la altura, y como recordatorio son 2. 5 4 centmetros a
1 pulgada.
Y luego, aqu abajo, una vez que tenga los valores correctos, cambie el cdigo para producir una tupla en
lugar de una lista.
De acuerdo, tenemos nuestro cdigo all imprimiendo la medida, y de nuevo en caso de que no sea
obvio, una lista de comprensin produce una lista, pero no tiene que darse la lista para iterar, esa es
la parte importante.
primer lugar, solo para demostrar que una comprensin puede usar cualquier tipo o secuencia iterable.
Y esa es la razn por la que realmente cre este desafo en
No tiene que proporcionar una lista para una lista de comprensin. Entonces, la lista o conjunto en la lista de
comprensin se refiere al tipo de objeto producido por la comprensin. De acuerdo, entonces tenemos el valor aqu, entonces
en la lnea 13 ingresemos nuestra comprensin. Voy a eliminar ese cdigo all entre
los corchetes, y
vamos a ir con pulgadas multiplicadas por dos punto cinco cuatro por pulgada en pulgadas de medida de subrayado.
Dejar el cdigo para imprimir la medida de subrayado de centmetros.
tem en la tupla, y lo multiplica por el nmero de centmetros en una pulgada, dos punto cinco cuatro.
Entonces la comprensin itera sobre cada
Entonces, ejecutemos esto para confirmar que funciona.
Y puede ver que hemos obtenido correctamente los valores, siete
punto seis dos, veinte punto tres dos y cincuenta punto ocho. Bien, ahora siguiente parte, necesitamos convertir
el cdigo para producir una tupla en lugar de una lista.
Todo lo que tenemos que hacer es analizar la comprensin de la funcin de tupla para que funcione.
As que agreguemos el cdigo all para hacer eso. Ahora la lnea 18, haremos una medida de subrayado de cm igual a tupla, luego queremos
parntesis, luego tenemos que agregar la comprensin de la lista a la llamada de tupla. medida de subrayado de pulgada por pulgada.
Entonces, en los
corchetes de izquierda
a derecha va a ser as, ahora podra simplemente pegar ese cdigo, pero lo escribir rpidamente,
una pulgada por dos puntos cinco cuatro, para una Y luego en la ltima lnea,
imprimiremos cm_measurement nuevamente.
As que, bsicamente, esta llamada aqu en la lnea 18 consiste en convertir una tupla de valores en una unidad,
pulgadas aqu, en una tupla equivalente usando otro conjunto de unidades, centmetros.
pero vamos a ejecutarla para asegurarnos de obtener los resultados correctos.
Y creo que eso es bastante impresionante para una lnea de cdigo,
Ahora tenemos los mismos resultados en una tupla.
De acuerdo, entonces voy a detener el video aqu. En el siguiente vamos a ver cmo agregar condiciones a nuestras comprensiones.
As que te ver en el siguiente video.