擅长:python、mysql、java
<p>可以使用长度为5的<a href="https://docs.python.org/3/library/collections.html#collections.deque" rel="nofollow noreferrer">^{<cd1>}</a>作为缓存。您只需在迭代时附加每个字符串,deque负责限制大小,根据需要从前面弹出项目。例如:</p>
<pre><code>from collections import deque
strings = (f'a{n}' for n in range(20)) # Generator to act as a dummy file
d = deque([], 5)
target = '8'
for s in strings:
if target in s:
print(s, list(d))
d.append(s)
</code></pre>
<p>输出:</p>
<pre><code>a8 ['a3', 'a4', 'a5', 'a6', 'a7']
a18 ['a13', 'a14', 'a15', 'a16', 'a17']
</code></pre>
<p>这也可以轻松地处理早期事件,例如使用<code>target = '3'</code>:</p>
<pre><code>a3 ['a0', 'a1', 'a2']
a13 ['a8', 'a9', 'a10', 'a11', 'a12']
</code></pre>