擅长:python、mysql、java
<p>当你这样做的时候</p>
<pre><code>for i in row:
row[i] = int(row[int(i)])
</code></pre>
<p>i是数组<code>row</code>中的元素。因此,<code>i</code>将是'1'然后是'2'然后是'3'</p>
<p>但是索引必须是整数,i是字符串,所以会出现错误</p>
<hr/>
<p>如果您这样做:</p>
<pre><code>for i in row:
row[int(i)] = int(row[i])
</code></pre>
<p>这仍然是一个错误,因为i是数组<code>row</code>中元素的整数。因此,我将是1,然后是2,然后是3</p>
<p>但是<code>row[3]</code>将导致<code>IndexError</code>,因为列表中只有3个元素,编号从0开始</p>
<hr/>
<p>而在另一种情况下(第一种情况),<code>i</code>变为0,然后变为1,然后变为2,这不会导致错误,因为行[2]是有效的</p>
<hr/>
<p>原因是:</p>
<blockquote>
<p>range() is 0-index based, meaning list indexes start at 0, not 1. eg.
The syntax to access the first element of a list is mylist[0] .
Therefore the last integer generated by range() is up to, but not
including, stop .</p>
</blockquote>