擅长:python、mysql、java
<p>我认为第四行很混乱,因为虽然Python可以在列表理解中选择/过滤,但在其标准表达式中却不能这样做。</p>
<p>所以人们的一种方式就是把两者结合在一起。它们创建了一个列表理解,实际上它没有转换(因此是<code>c for c in coinValueList</code>),只是为了添加<code>if c <= cents</code>子句。然后将其用作标准<code>for x in iterable:</code>表达式的iterable。我想这就是你困惑的原因。</p>
<p>另一种写法可能是:</p>
<pre><code>...
for eachCoinValue in filter(lambda x: x <= cents, coinValueList):
...
</code></pre>
<p>或者更清楚地说,“意图揭示变量”是:</p>
<pre><code>...
smallEnoughCoins = filter(lambda each: each <= cents)
for each in smallEnoughCoins:
...
</code></pre>