<div dir="ltr"><div>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:<br><br></div><div>In python3.8:<br></div><div>>>> import timeit<br></div><div>>>> setup = """def function1(lista, base):<br>... Â  Â  s = 0<br>... Â  Â  for e in lista[base:]+lista[:base]:<br>... Â  Â  Â  Â  s += e<br>... Â  Â  return s<br>...<br>... def function2(lista, base):<br>... Â  Â  s = 0<br>... Â  Â  l = len(lista)<br>... Â  Â  for i in range(l):<br>... Â  Â  Â  Â  s += lista[(i + base) % l]<br>... Â  Â  return s<br>...<br>... lista = list(range(10**6))<br>... base = 424_242<br>... """<br><br>>>> timeit.timeit("function1(lista, base)", setup=setup, number=500)<br>33.36239886200008<br><br><br>>>> timeit.timeit("function2(lista, base)", setup=setup, number=500)<br>66.6768571770001<br><br><br></div><div>In pypy3 7.3.0<br><br></div><div>>>>> timeit.timeit("function1(lista, base)", setup=setup, number=500)<br>3.723521980999976<br>>>>> timeit.timeit("function2(lista, base)", setup=setup, number=500)<br>9.050152363000052<br><br></div></div>