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

假设我有abcdefgh.我想要所有长度为k的连续子串.所以对于这个字符串,如果k = 4,我想要abcd bcde cdef defg efgh.我会用索引循环,但是有更“
pythonic”的方式吗? 最佳答案 怎么样:

In [13]: s = "abcdefgh"

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

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

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

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

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

点赞