假设我有abcdefgh
。我想要所有长度为k
的连续子串。因此对于k = 4
这个字符串,我希望abcd
bcde
cdef
defg
efgh
。我会用索引循环,但是有更“pythonic”的方式吗?
答案 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']
(就个人而言,我不会使用后者,因为它相当钝。)