|
11
|
Programación / Scripting / Re: Generadores y yield en Python…
|
en: 18 Diciembre 2022, 14:59 pm
|
Hola, gracias por el consejo. Te comento que me llevo a esto, el blog donde encontré una explicación interesante sobre generadores, decía tener un archivo .txt con más de 64.000.000 de registros, con la manera "tradicional", por momentos la memoria colapsaba, en cambio, construyendo un generador no ocurría lo mismo.- Ya que estamos, en el segundo caso, ¿debo cerrar el archivo? import codecs with codecs.open('Movimientos.txt', 'r', encoding='utf-8') as archivo: print(type(archivo)) filas = (rows for rows in open('Movimientos.txt')) print(type(filas))
Slds. Daniel ☕☕☕
|
|
|
12
|
Programación / Scripting / Re: Generadores y yield en Python…
|
en: 17 Diciembre 2022, 19:20 pm
|
Hola gente, ¿cómo están?, bueno, conseguí lo deseado, solo que los resultados me resultan todavía un tanto confusos, seguiré estudiando el tema.- import codecs import time import sys inicio = time.time() filas = (rows for rows in open('Movimientos.txt')) row = 0 for fil in filas: row += 1 print(f"Con comprensión de generadores...: {row} registros") fin = time.time() tiempoUno=fin-inicio print(f"Tiempo consumido con comprensión de generadores...:{tiempoUno:.10f}") print(f"Peso en memoria...; {sys.getsizeof(filas)} bytes") print("==============================================================") inicio = time.time() fila = 0 with codecs.open('Movimientos.txt', 'r', encoding='utf-8') as archivo: for row in archivo: fila += 1 print(f"De manera tradicional...: {fila} registros") fin = time.time() tiempoDos=fin-inicio print(f"Tiempo consumido de manera tradicional...:{tiempoDos:.10f}") print(f"Peso en memoria...; {sys.getsizeof(archivo)} bytes") print("==============================================================") print(f" Diferencia...: {tiempoUno-tiempoDos:.10f}")
Slds. Daniel ☕☕☕
|
|
|
13
|
Programación / Scripting / Re: Generadores y yield en Python…
|
en: 15 Diciembre 2022, 21:07 pm
|
Como verán continuo con lo mismo, en este caso el generador tiene una ventaja de tiempo con respecto a una manera «tradicional» de contar la cantidad de registros de un archivo .txt.- Alguien me podría decir, ¿ cómo puedo saber en memoria cuanto ocupa una y otra?, gracias import codecs import time inicio = time.time() filas = (row for row in open('Movimientos.txt')) row = 0 for fil in filas: row += 1 print(row) fin = time.time() print(fin-inicio) print("====================================") inicio = time.time() fila = 0 with codecs.open('Movimientos.txt', 'r', encoding='utf-8') as archivo: for row in archivo: fila += 1 print(fila) fin = time.time() print(fin-inicio)
51800 0.015956401824951172 ======================================================== 51800 0.11170220375061035
gracias Dani por los consejos... Slds. Daniel ☕☕☕
|
|
|
14
|
Programación / Scripting / Re: Generadores y yield en Python…
|
en: 14 Diciembre 2022, 20:01 pm
|
Hola tocayo, gracias por ocuparte, para serte franco es la página que más había leído, por eso sigo con ta intriga de como aplicar en la práctica los generadores y yield, seguiremos investigando, gracias, abrazo…
Slds. Daniel ☕☕☕
|
|
|
15
|
Programación / Scripting / Generadores y yield en Python…
|
en: 13 Diciembre 2022, 19:43 pm
|
Hola gente linda, ¿cómo están? La consulta es ¿le encontraron en la vida real alguna utilidad a los generadores? Los consulto porque me pase 3 días enteros leyendo sobre el tema y en realidad todos los ejemplos son con números primos, impares, pares y no pasa de eso. Bueno es todo lo que necesito saber, ya que me falta aprender sobre yield from y otras cositas, pero si no tiene una utilidad significativa continuo con el siguiente tema.- def principal(): def tabla_del_cinco(oper): num = 1 while True: yield num , num * oper num += 1 try: operando = int(input("\n Ingrese la tabla que desea consultar...: ")) except: print("\n Debe ingresar un entero...") else: tabla = tabla_del_cinco(operando) print('\n===== "uno" para mostrar - "otro" para finalizar =====\n') while True: salir = input('"Ingrese...: ') if salir == '1': tupla = tuple(next(tabla)) final = f"{operando} x {tupla[0]} = {tupla[1]}" print(final) else: break if __name__ == "__main__": principal()
Slds. Daniel ☕☕☕
|
|
|
17
|
Programación / Scripting / Re: lista de palabras agrupada por su letra inicial(diccionario)
|
en: 25 Noviembre 2022, 15:26 pm
|
Bueno, voy a dividir la respuesta: MCKSys Argentina gracias por el código, interesante me atrevo a pedirte un favor y es que me ayudes a hacerlo sin utilizar la lista abecedario, lo intente con chr(97) pero todavía no lo logro.- ========================================================= Rey, aprovecho para comentarte que el ej. de clase de este post lo guarde en un cuadrito para tenerlo como ej. principal, gracias… https://foro.elhacker.net/scripting/que_todos_los_entry_dentro_de_un_frame_sean_readonly_en_tkinter-t516282.0.html
En cuanto a tu código está muy bien, pero es muy avanzado para mí, si bien no son tantas las líneas no logro entenderlo, lo voy a tener muy en cuenta, lo que ocurre es la primera vez que leo/práctico sobre diccionario en Python, siempre lo deje a un lado, pero llego el momento de aprender al respecto.- Slds. Daniel ☕☕☕
|
|
|
18
|
Programación / Scripting / Re: lista de palabras agrupada por su letra inicial(diccionario)
|
en: 25 Noviembre 2022, 02:23 am
|
Bueno, parece funcionar, solo me queda que alguien me diga si hay una manera mejor/distinta palabras = ['mesa', 'móvil', 'barco', 'coche', 'avión', 'bandeja', 'casa', 'monitor', 'carretera', 'arco'] abecedario = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] diccionario = {} acumulados = [] for abc in abecedario: for pal in palabras: if abc == pal[0]: acumulados.append(pal) if len(acumulados): diccionario[abc] = acumulados[:] acumulados.clear() for clave, valor in diccionario.items(): print(clave, ":", valor)
Slds. Daniel ☕☕☕
|
|
|
19
|
Programación / Scripting / lista de palabras agrupada por su letra inicial(diccionario)
|
en: 24 Noviembre 2022, 20:28 pm
|
1. Escriba un programa en Python que acepte una lista de palabras y las agrupe por su letra inicial usando un diccionario (solución). Entrada: [ “mesa”, “móvil”, “barco”, “coche”, “avión”, “bandeja”, “casa”, “monitor”, “carretera”, “arco”] Salida: {“m”: [“mesa”, “móvil”, “monitor”], “b”: [“barco”, “bandeja”], “c”: [“coche”, “casa”, “carretera”], “a”: [“avión”, “arco”]}
palabras = ['mesa', 'móvil', 'barco', 'coche', 'avión', 'bandeja', 'casa', 'monitor', 'carretera', 'arco'] abecedario = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] diccionario = {} for abc in abecedario: for pal in palabras: if abc == pal[0]: diccionario[abc] = [pal] print(diccionario)
Hola gente, ¿cómo están? Las consultas es ¿estoy bien encaminado, o lo harían de otra manera?, no desconozco que no está del todo bien porque logro poner una sola palabra por letra, pero bueno, ya lo lograré… Desde ya muchas gracias… Slds. Daniel ☕☕☕
|
|
|
|
|
|
|