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

时间:2014-03-03 20:34:58

标签: python

假设我有abcdefgh。我想要所有长度为k的连续子串。因此对于k = 4这个字符串,我希望abcd bcde cdef defg efgh。我会用索引循环,但是有更“pythonic”的方式吗?

1 个答案:

答案 0 :(得分: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']

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

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

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

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