<p>基本上,在这段代码中</p>
<pre class="lang-py prettyprint-override"><code>sound = ["moo", "oink", "neigh", "cluck", "bahh"]
for animal in ["cow", "pig", "horse", "chick", "sheep"]:
print(verseFor(animal, sound))
</code></pre>
<p><code>sound</code>是一个列表,<code>animal</code>在列表上迭代,即动物是列表的单个元素,在第一次迭代中表示<code>cow</code>,在第二次迭代中表示<code>pig</code>,在第三次迭代中表示<code>horse</code>,依此类推</p>
<p>但是您将<code>sound</code>作为一个完整的列表传递,而不是在<code>verseFor</code>中传递它的单个元素</p>
<p>因此,您必须迭代这两个列表,以逐个元素发送它们的动物和声音元素。如前所述,您可以像这样使用<code>zip</code></p>
<pre class="lang-py prettyprint-override"><code>sound = ["moo", "oink", "neigh", "cluck", "bahh"]
animal = ["cow", "pig", "horse", "chick", "sheep"]
for ani, sou in zip(animal, sound):
print(verseFor(ani, sou))
</code></pre>
<p>现在你在声音和动物两个元素上循环。如果您查看<code>zip</code>的输出,就会得到以下结果</p>
<pre><code>list(zip(animal,sound))
>>>[('cow', 'moo'),
('pig', 'oink'),
('horse', 'neigh'),
('chick', 'cluck'),
('sheep', 'bahh')]
</code></pre>
<p>因此,基本上在我提供的代码的第一次迭代中,我们在<code>ani</code>中传递<code>cow</code>,在<code>sou</code>中传递<code>moo</code>。然后在下一次迭代中<code>pig</code>和<code>oink</code>,依次类推</p>