<p>我有一个字符串,我需要生成一个列表,列出以给定分隔符结尾的所有子字符串的长度。你知道吗</p>
<p>例如:string='a0ddb0gf0',separator='0',所以我需要生成:lengs=[2,4,3],因为len('a0')==2,len('ddb0')=4,len('gf0')==3。你知道吗</p>
<p>我知道可以通过以下方法来实现(例如):</p>
<pre><code>separators = [index for index in range(len(string)) if string[index]==separator]
lengths = [separators[index+1] - separators[index] for index in range(len(separators)-1)]
</code></pre>
<p>但我需要它做得非常快(对大量的数据)。为大量数据生成中间列表非常耗时。你知道吗</p>
<p>有没有一个解决方案可以快速而整洁地完成这项工作(py2.7)?你知道吗</p>
<p>我不知道这会有多快,但还有一个办法:</p>
<pre><code>def len_pieces(s, sep):
i = 0
while True:
f = s.find(sep, i)
if f == -1:
yield len(s) - i
return
yield f - i + 1
i = f + 1
</code></pre>