J'ai une liste:incrémenter dans une liste efficace
foo = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Actuellement, j'incrémenter un nombre connu d'indices consécutifs d'une valeur donnée:
def increment(index, length, some_value, a_list):
for i in range(index, index+length):
a_list[i] += some_value
return a_list
foo = increment(2,3,4,foo)
# [0, 0, 4, 4, 4, 0, 0, 0, 0, 0]
Cependant, le problème est que je faire cela sur une gamme de 50-100 "longueur" et ferait cela des millions de fois. Donc, ma boucle poserait un problème considérable au temps de calcul (je crois). Existe-t-il un moyen d'ajouter une valeur donnée à tous les indices dans une plage donnée sans avoir à parcourir les indices donnés?
Mais cela peut nécessiter des modifications à d'autres codes en utilisant ce tableau. S'il s'agit d'un projet avec beaucoup de code et/ou de personnes, cela ne vaut peut-être pas le coup. –
Cet algorithme fonctionnerait. Cela nécessite un peu de recodage, mais heureusement, il s'agit d'un projet d'un seul homme. Le gros problème est que je travaille avec un énorme jeu de données. Millions d'indices et des millions d'incréments, chaque incrément couvrant 50-100 indices. Pour couvrir le remède dont la mémoire a besoin pour tous les indices, j'ai un sous-index qui couvre le total théorique (sortie pour classer le passé), car mes incréments sont triés en commençant l'index. Cela modifiera encore l'algorithme fourni pour tenir compte des changements de fenêtre. – user1502381