Maison >développement back-end >Tutoriel Python >Comment puis-je implémenter efficacement l'itération de fenêtre coulissante en Python ?
Techniques d'itération par fenêtre coulissante
Pour l'itération par fenêtre coulissante sur un itérable, une implémentation de base peut utiliser le découpage et l'itération de liste :
def rolling_window(seq, window_size): it = iter(seq) win = [it.next() for cnt in range(window_size)] # First window yield win for e in it: # Subsequent windows win[:-1] = win[1:] win[-1] = e yield win
Efficace et élégant Solutions
Pour plus d'efficacité et d'élégance, une expression génératrice avec itertools peut être utilisée :
from itertools import islice def window(seq, n=2): "Returns a sliding window (of width n) over data from the iterable" " s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ..." it = iter(seq) result = tuple(islice(it, n)) if len(result) == n: yield result for elem in it: result = result[1:] + (elem,) yield result
Pour des itérables plus simples comme des listes ou des tuples, une approche simple utilisant la plage et l'indexation peut être utilisé :
seq = [0, 1, 2, 3, 4, 5] window_size = 3 for i in range(len(seq) - window_size + 1): print(seq[i: i + window_size])
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!