擅长:python、mysql、java
<p>当python运行for循环时,它会将变量<code>animallist</code>重新分配给<code>animallist (class 'list')</code>的每个项(“cows”、“sheep”、“pigs”等,它们是<code>class 'str'</code>),因此变量<code>animallist</code>变成了<code>class 'str'</code>。当for循环迭代到列表的最后一项<code>"ducks"</code>时,它将<code>animallist</code>赋值给值<code>"ducks"</code>,因此当它运行<code>print(animallist[4])</code>时,它将打印字符串<code>"ducks"</code>的第四个索引,即<code>s</code></p>
<p>您可以在此处看到<code>animallist</code>变量的类型已更改:</p>
<pre><code>animallist = ["cows", "sheep", "pigs", "horses", "chickens", "goats", "ducks"]
print(type(animallist))
for animallist in animallist:
pass
print(type(animallist))
</code></pre>
<p>输出:</p>
<pre><code><class 'list'>
<class 'str'>
</code></pre>
<p>因此,循环函数中的变量和iterable中的变量不应使用相同的名称</p>