Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取连续子字符串的最有效方法_Python - Fatal编程技术网

Python 获取连续子字符串的最有效方法

Python 获取连续子字符串的最有效方法,python,Python,假设我有abcdefgh。我想要所有长度为k的连续子字符串。因此,对于这个字符串,如果k=4,我希望abcdbcdecdefdefgefgh。我只想循环使用索引,但是有没有更“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'] 仍然是一个循环,但包装在列表中 或者,如果你想变得有

假设我有
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']

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

你想要高效的还是蟒蛇式的?Python看重的是明显性和可读性而不是效率(因为在Python的世界里,编码器效率>程序效率)。嗯,效率最好。你是如何处理子字符串的,你有多少子字符串?如果您一次处理一个,并且有很多,那么生成器可能是提高效率的一个好方法您是否确定需要最高效的实现?众所周知,程序员不善于预测他们的瓶颈在哪里。我建议您使用清晰明了的解决方案进行编码,然后在性能不可接受时进行优化。(我一直在这样做,即使我处理大型数据集,我也很少回去进行优化。)如果可以的话,我会这样做,但我无法改进。