Atención, esto es un poco recursivo;)funciones de temporización
respondí esta pregunta: Python:How can i get all the elements in a list before the longest element?
Y después de que presenté allí donde otra respuesta que debe ser más rápido (que se cree el autor, y también lo hizo I) . Traté de cronometrar las diferentes soluciones, pero la solución que debería ser más lenta fue en realidad más rápida. Esto me hizo pensar que hay algo mal con mi código. ¿O es eso?
import string
import random
import time
def solution1(lst):
return lst[:lst.index(max(lst, key=len))]
def solution2(lst):
idx, maxLenStr = max(enumerate(lst), key=lambda x:len(x[1]))
return lst[:idx]
# Create a 100000 elements long list that contains
# random data and random element length
lst = []
for i in range(100000):
s = "".join([random.choice(string.letters+string.digits) for x in range(1, random.randint(1,50))])
lst.append(s)
# Time the first solution
start = time.time()
solution1(lst)
print 'Time for solution1', (time.time() - start)
# Time the second solution
start = time.time()
solution2(lst)
print 'Time for solution2', (time.time() - start)
actualización
Antes de que alguien menciona qué pongo esto es como una nueva pregunta. La pregunta es más acerca de mí aprendiendo cómo medir el tiempo de ejecución ...
estas dos funciones no devuelven el mismo tipo de objeto – joaquin
Doh! ¡Por supuesto, gracias! –
Se arregló. Pero eso incluso hace que mi código sea más rápido ... Y todavía pensaba que la solución2 debería ser más rápida. –