Ritiro tutto: per liste grosse il costo di calcolare (in python) a ogni iterazione `(i + base) % len` è molto maggiore del costo di creare una sola volta all'inizio la nuova lista:
In python3.8: >>> import timeit >>> setup = """def function1(lista, base): ... s = 0 ... for e in lista[base:]+lista[:base]: ... s += e ... return s ... ... def function2(lista, base): ... s = 0 ... l = len(lista) ... for i in range(l): ... s += lista[(i + base) % l] ... return s ... ... lista = list(range(10**6)) ... base = 424_242 ... """ >>> timeit.timeit("function1(lista, base)", setup=setup, number=500) 33.36239886200008 >>> timeit.timeit("function2(lista, base)", setup=setup, number=500) 66.6768571770001 In pypy3 7.3.0 >>>> timeit.timeit("function1(lista, base)", setup=setup, number=500) 3.723521980999976 >>>> timeit.timeit("function2(lista, base)", setup=setup, number=500) 9.050152363000052
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python