擅长:python、mysql、java
<p>似乎您在错误的级别应用了<code>filter</code>。我个人更喜欢列表理解,而不是<code>filter</code>在大多数情况下:</p>
<pre><code>[len([x for x in w if x != '']) for w in data]
</code></pre>
<p>使用过滤器:</p>
^{pr2}$
<p><strong>编辑</strong></p>
<p>这样更有效,因为它不必构建新列表:</p>
<pre><code>[sum(1 for x in w if x != '') for w in data]
</code></pre>
<p>为了澄清评论中出现的混乱,请记住我们得到了一个<em>列表</em>。以下是有效输入:</p>
<pre><code>data = [
['a', 'b', 'c'],
['d', '', 'e'],
]
</code></pre>
<p>上面任何带有<code>data</code>的表达式的值都是<code>[3, 2]</code>,因为第一个子列表有3个非空字符串,第二个子列表有2个非空字符串。在</p>