擅长:python、mysql、java
<p>实际的索引是。这就是为什么你可以只写<code>i in bad</code>而不是{<cd3>}。在</p>
<p>如果需要索引和字符,请使用<code>enumerate</code>,如下所示:</p>
<pre><code>for idx, ch in enumerate(test):
if ch in bad and test[idx+1] in bad:
</code></pre>
<p>或者两者都使用索引:</p>
^{pr2}$
<p>另外,请注意,无论采用哪种方法,当到达最后一个字符时,都会出现一个错误,您将尝试检查下一个字符,但没有下一个字符。在</p>
<hr/>
<p>如果您想更抽象地思考,那么<a href="http://docs.python.org/library/itertools.html#recipes" rel="nofollow noreferrer">th recipes in the ^{<cd6>} docs</a>中的<code>pairwise</code>函数(或者您可以<code>pip install</code>或者{<cd8>}或者{<cd9>};我想他们都有)可以让您在相邻的一对<em>上循环任何</em>。所以:</p>
<pre><code>for current_char, next_char in pairwise(test):
if current_char in bad and next_char in bad:
</code></pre>
<p>或者,如果不太灵活,这可能更容易理解:</p>
<pre><code>for current_char, next_char in zip(test, test[1:]):
if current_char in bad and next_char in bad:
</code></pre>
<hr/>
<p>如果你理解集合交集的概念,这里还有另一个技巧,可以让你避免不得不做两个单独的测试:</p>
<pre><code>bad = set(bad)
for idx in range(len(test)):
if bad.intersection(test[idx:idx+2]):
</code></pre>
<p>你仍然需要处理“最后一个”问题,你会得到一个错误的测试,而不是一个异常,但它仍然是错误的。在</p>
<p>您也可以将其与<code>pairwise</code>结合使用。在</p>