擅长:python、mysql、java
<p>使用列表理解或生成器表达式可以简化食谱代码:</p>
<pre><code>def make_filter(keep):
def the_filter(string):
return ''.join(char for char in string if char in keep)
return the_filter
</code></pre>
<p>这将以与提供的makefilter相同的方式工作。在</p>
^{pr2}$
<p>以后会动态地创建一个函数,比如Richie。<code>(char for char in string if char in keep)</code>位代码创建一个生成器,该生成器将迭代原始字符串的字符并执行筛选。<code>''.join(...)</code>然后将这些字符组合成一个字符串。在</p>
<p>就我个人而言,我发现抽象层次(编写函数返回函数)对于这类问题来说太过分了。这是一个品味的问题,但我认为如果您直接调用重要的行,代码会更清晰:</p>
<pre><code>>>> string = 'tigere, igers, bigers'
>>> keep = 'aeiou'
>>> ''.join(char for char in string if char in keep)
'ieeieie'
</code></pre>