擅长:python、mysql、java
<p><a href="http://docs.python.org/library/functions.html#filter" rel="nofollow">filter()</a>执行以下操作:给定一个函数和一个iterable(如list、tuple等),将列表中的每个项传递给一个函数。对于每个项,函数返回布尔值true或false。如果函数对某个项返回true,则该项将添加到新列表中。在</p>
<p>当过滤器完成时,它返回包含所有选定项的新列表。这允许您根据条件在列表中“过滤”,并仅选择与条件匹配的项。在</p>
<p>这里发生了一件棘手的事。<a href="http://docs.python.org/library/functions.html#filter" rel="nofollow">filter()</a>循环遍历任何iterable。这包括一个字符串。当您传递dict['Alice']作为要迭代的对象时,它将传递“2341”,并对字符串中的每个字符运行过滤器。您可以将过滤器的逻辑分解如下:</p>
<pre><code>def matches(x):
return x == '2341'
result = ''
for char in x:
if matches(char):
result += char
print result
</code></pre>
<p>这不起作用,因为您的单个字符都不等于“2341”。在</p>