@@ -929,9 +929,7 @@ which incur interpreter overhead.
929929 def sliding_window(iterable, n):
930930 # sliding_window('ABCDEFG', 4) --> ABCD BCDE CDEF DEFG
931931 it = iter(iterable)
932- window = collections.deque(islice(it, n), maxlen=n)
933- if len(window) == n:
934- yield tuple(window)
932+ window = collections.deque(islice(it, n-1), maxlen=n)
935933 for x in it:
936934 window.append(x)
937935 yield tuple(window)
@@ -1420,8 +1418,34 @@ The following recipes have a more mathematical flavor:
14201418 >>> list (grouper(' abcdefg' , n = 3 , incomplete = ' ignore' ))
14211419 [('a', 'b', 'c'), ('d', 'e', 'f')]
14221420
1421+ >>> list (sliding_window(' ABCDEFG' , 1 ))
1422+ [('A',), ('B',), ('C',), ('D',), ('E',), ('F',), ('G',)]
1423+ >>> list (sliding_window(' ABCDEFG' , 2 ))
1424+ [('A', 'B'), ('B', 'C'), ('C', 'D'), ('D', 'E'), ('E', 'F'), ('F', 'G')]
1425+ >>> list (sliding_window(' ABCDEFG' , 3 ))
1426+ [('A', 'B', 'C'), ('B', 'C', 'D'), ('C', 'D', 'E'), ('D', 'E', 'F'), ('E', 'F', 'G')]
14231427 >>> list (sliding_window(' ABCDEFG' , 4 ))
14241428 [('A', 'B', 'C', 'D'), ('B', 'C', 'D', 'E'), ('C', 'D', 'E', 'F'), ('D', 'E', 'F', 'G')]
1429+ >>> list (sliding_window(' ABCDEFG' , 5 ))
1430+ [('A', 'B', 'C', 'D', 'E'), ('B', 'C', 'D', 'E', 'F'), ('C', 'D', 'E', 'F', 'G')]
1431+ >>> list (sliding_window(' ABCDEFG' , 6 ))
1432+ [('A', 'B', 'C', 'D', 'E', 'F'), ('B', 'C', 'D', 'E', 'F', 'G')]
1433+ >>> list (sliding_window(' ABCDEFG' , 7 ))
1434+ [('A', 'B', 'C', 'D', 'E', 'F', 'G')]
1435+ >>> list (sliding_window(' ABCDEFG' , 8 ))
1436+ []
1437+ >>> try :
1438+ ... list (sliding_window(' ABCDEFG' , - 1 ))
1439+ ... except ValueError :
1440+ ... ' zero or negative n not supported'
1441+ ...
1442+ 'zero or negative n not supported'
1443+ >>> try :
1444+ ... list (sliding_window(' ABCDEFG' , 0 ))
1445+ ... except ValueError :
1446+ ... ' zero or negative n not supported'
1447+ ...
1448+ 'zero or negative n not supported'
14251449
14261450 >>> list (roundrobin(' abc' , ' d' , ' ef' ))
14271451 ['a', 'd', 'e', 'b', 'f', 'c']
0 commit comments