擅长:python、mysql、java
<p>根据您的具体需要,您可以在列表上使用一个迭代器,或者使用其中两个迭代器作为mae by <a href="http://docs.python.org/library/itertools.html?highlight=itertools.tee#itertools.tee" rel="nofollow noreferrer">itertools.tee</a>。一、 例如,如果您只想在第一个模式之后的行中搜索第二个模式,那么一个迭代器就可以:</p>
<pre><code>theiter = iter(thelist)
for aline in theiter:
if re.search(somestart, aline):
for another in theiter:
if re.search(someend, another):
yield aline, another # or print, whatever
break
</code></pre>
<p>这将<em>而不是</em>搜索从<code>aline</code>到结束<code>somestart</code>的行,<em>只搜索<code>someend</code>的行。如果您需要为这两个目的搜索它们,即让<code>theiter</code>本身保持原样,那么<code>tee</code>可以帮助您:</p>
^{pr2}$
<p>这是关于<code>tee</code>的一般规则的一个例外,文档给出了:</p>
<blockquote>
<p>Once <code>tee()</code> has made a split, the
original iterable should not be used
anywhere else; otherwise, the iterable
could get advanced without the tee
objects being informed.</p>
</blockquote>
<p>因为<code>theiter</code>和{<cd9>}的推进发生在代码不相交的部分,并且{<cd9>}总是在需要时重新重建(因此{<cd5>}的推进与此无关)。在</p>