擅长:python、mysql、java
<p>在<code>for</code>循环中<code>i</code>本身初始化并开始迭代元组。每次迭代时<code>i</code>的内容是元组中的一个元素。
让我们更深入地了解一下。让你的元组是<code>(3, 4, 6, 7)</code>
在第一次迭代中:</p>
<pre><code>for i in x # i=3
i = i+1 # i = 4
if x[i] %2 == 0 : # x[4] % 2 == 0 => This will give you IndexError, since there is no index 4 in the tuple x(python uses zero based indexing)
</code></pre>
<p>因此,您不需要单独递增<code>i</code>,因为<code>for</code>将迭代变量增加到所提供序列的末尾(在您的例子中,它是到元组<code>x</code>中的最后一个元素)</p>
<p>而且由于<code>i</code>拥有元组本身的元素,所以通过增加它,你就增加了<code>i</code>中的值。然后从元组访问索引递增的元素。也就是说,如果元组元素是<code>3</code>,则首先将其递增1,使其成为<code>4</code>,然后检查元组第4个索引中的元素是否偶数,即<code>x[4]</code>是否偶数。但是由于我考虑过的元组是长度为4的,所以它将抛出<code>IndexError</code></p>
<p>所以,这里不需要初始化<code>i = -1</code>,不需要使用<code>while</code>,也不需要在<code>for</code>循环内增加<code>i</code>。其余解由Selcuk给出。在</p>