采用顺序子串python的最有效方法

goo*_*cow 3 python

让我说我有abcdefgh.我想要所有长度的连续子串k.所以对于这个字符串if k = 4,我想要abcd bcde cdef defg efgh.我会用索引循环,但是有更"pythonic"的方式吗?

NPE*_*NPE 7

怎么样:

In [13]: s = "abcdefgh"

In [14]: [s[i:i+4] for i in xrange(len(s)-3)]
Out[14]: ['abcd', 'bcde', 'cdef', 'defg', 'efgh']
Run Code Online (Sandbox Code Playgroud)

仍然是一个循环,但包含在列表理解中.

或者,如果你想得到幻想:

In [18]: map(''.join, zip(*(s[i:] for i in range(4))))
Out[18]: ['abcd', 'bcde', 'cdef', 'defg', 'efgh']
Run Code Online (Sandbox Code Playgroud)

(就个人而言,我不会使用后者,因为它相当钝.)