Python Split String In Moving Window
I have a string with digits like so - digit = '7316717' Now I want to split the string in such a way that the output is a moving window of 3 digits at a time. So I get - ['731',
Solution 1:
The itertools examples provides the window
function that does just that:
from itertools import islice
defwindow(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))
iflen(result) == n:
yield result
for elem in it:
result = result[1:] + (elem,)
yield result
Example usage:
>>> ["".join(x) for x in window("7316717", 3)]['731', '316', '167', '671', '717']
Solution 2:
>>> s = "7316717">>> [s[i:i+3] for i inrange(len(s)-2)]
['731', '316', '167', '671', '717']
Solution 3:
There is a very good recipe pairwise
in itertools docs.
Modernizing it a bit for n
elements in the group, I made this code:
from itertools import tee, izip
def window(iterable, n):
els = tee(iterable, n)
for i, el in enumerate(els):
for _ in xrange(i):
next(el, None)
return izip(*els)
print(["".join(i) for i in window("2316515618", 3)])
Python 2.7
Solution 4:
digit = "7316717"digit_sets = [digit[i:i+3] for i in range(len(digit)-2)]
Post a Comment for "Python Split String In Moving Window"