擅长:python、mysql、java
<p>在一个序列的固定大小片上迭代的速度不能比O(N)快,因此当前的方法已经非常有效了。你知道吗</p>
<p>就优雅性而言,您可以将迭代抽象为它自己的函数,这将使您当前的作用域不至于被一个字母的变量名搞得乱七八糟:</p>
<pre><code>def iter_slices(s, size):
for i in range(len(s)-size+1):
yield s[i:i+size]
for line in lines[1::4]:
for substring in iter_slices(line, k):
countFromSb[substring] = countFromSb.get(substring, 0) + 1
linesProcessed += 1
</code></pre>
<p>这也可以与Gribouillis建议使用计数器相结合,完全消除<code>for</code>块:</p>
<pre><code>countFromSb = Counter(substring for line in lines[1::4] for substring in iter_slices(line, k))
</code></pre>