Foros del Web » Programando para Internet » Python »

Elemento por elemento o un for en una lista

Estas en el tema de Elemento por elemento o un for en una lista en el foro de Python en Foros del Web. Un amigo esta haciendo un programa que reemplaza otros archivos y el me dice que es más sencillo y eficiente declarar una variable para cada ...
  #1 (permalink)  
Antiguo 22/05/2011, 11:53
 
Fecha de Ingreso: marzo-2010
Ubicación: Mérida, Venezula
Mensajes: 73
Antigüedad: 14 años, 7 meses
Puntos: 0
Elemento por elemento o un for en una lista

Un amigo esta haciendo un programa que reemplaza otros archivos y el me dice que es más sencillo y eficiente declarar una variable para cada archivo y repetir la instrucción shutil.copy que usar una lista con un for y reemplazar con cada vuelta.


¿Que opinan ustedes?
  #2 (permalink)  
Antiguo 22/05/2011, 12:05
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Elemento por elemento o un for en una lista

Código por favor. Lo mejor sería probar ambos códigos y testear el tiempo que tardan en correr. Esto lo puedes hacer con el modulo timeit.

Tu amigo esta callendo en un problema clásico de algo que se llama DRY Don't Repeat Yourself

Que sea mas rápido tal vez sea algunos nano o microsegundos mas rápido, pero al pasar ambos códigos por un optimizador el resultado debería ser el mismo.
  #3 (permalink)  
Antiguo 23/05/2011, 18:08
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Elemento por elemento o un for en una lista

Si no me equivoco la duda está entre algo que es así:

archivo1.copy()
archivo2.copy()
...
archivoN.copy()

y algo que es así

archivos = (archivo1, archivo2, ..., archivoN)
for i in archivos: i.copy()

Yo no creo que sea más rápido, y definitivamente es más trabajoso para expandirlo luego a acciones más complejas: ¿qué pasa si necesitaras 2 o más acciones sobre cada dato?

Hay casos en los que un bucle de pocas opciones es *un poco* más lento que hacer cada opción de forma individual, pero la ganancia en la realidad es poca. Si se trata de operaciones complejas, la operación será siempre más costosa que el inicializar el bucle.

En cualquier caso, los compiladores e intérpretes actuales se encargan de hacer esa optimización cuando es ventajosa, y definitivamente hay que ver el código para poder opinar mejor.

Coincido con razpeitia, además solamente hay que pensar en optimizar un programa cuando ya esté completo, no se puede optimizar lo que no funciona
  #4 (permalink)  
Antiguo 01/06/2011, 20:36
 
Fecha de Ingreso: marzo-2010
Ubicación: Mérida, Venezula
Mensajes: 73
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Elemento por elemento o un for en una lista

Bueno, a nuestro supervisor no le gusto que crackearamos el software que estábamos modificando, estabamos reemplazando los módulos en tiempo de ejecución así que en base a la arquitectura de Zope nos toco hacerle un override a los componentes usando normas zcml y herencia para sobre escribir los métodos originales por los de nosotros en una clase hija.

En otras palabras, nos dieron con una tabla

Razpetia, gracias por lo timeit, le daré un vistazo

Etiquetas: lista
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:19.