J'ai utilisé le fameux code folowing pour mon windoe glisser dans le document texte tokenized:Fenêtre coulissante en Python
def window(fseq, window_size):
"Sliding window"
it = iter(fseq)
result = tuple(islice(it, 0, window_size, round(window_size/4)))
if len(result) == window_size:
yield result
for elem in it:
result = result[1:] + (elem,)
result_list = list(result)
yield result_list
quand je veux appeler ma fonction avec la taille de la fenêtre inférieure à 6, tout est ok, mais quand je l'augmente, le début du texte est coupé. Par exemple:
c=['A','B','C','D','E', 'F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
print(list(window(c, 4)))
print(list(window(c, 8)))
Sortie:
[('A', 'B', 'C', 'D'), ['B', 'C', 'D', 'E'], ['C', 'D', 'E', 'F'], ['D', 'E', 'F', 'G'], ['E', 'F', 'G', 'H'], ['F', 'G', 'H', 'I'],...
[['C', 'E', 'G', 'I'], ['E', 'G', 'I', 'J'], ['G', 'I', 'J', 'K'], ['I', 'J', 'K', 'L'], ['J', 'K', 'L', 'M']...
Qu'est-ce qui ne va pas? Et pourquoi dans la première sortie le premier élément est entre parenthèses?
Ma sortie prévue pour print(list(window(c, 8)))
est:
[['A','B','C', 'D', 'E', 'F','G','H'], ['C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'], ['E', 'F', 'G', 'H', 'I', 'K', 'L', 'M']...
Où avez-vous obtenu ce code de? Il diffère matériellement des solutions sur [Roller ou glisseur itérateur de fenêtre en Python] (http://stackoverflow.com/q/6822725) –
J'ai juste ajouté le point de départ et l'étape selon la documentation islise https: // docs. python.org/2/library/itertools.html#itertools.islice – Polly
Mais pourquoi? Vous n'avez pas besoin d'une taille de pas. Laissez-le à 1. –