擅长:python、mysql、java
<p>你的思维至少有三个错误</p>
<p>第一个是空列表与<code>None</code>相同</p>
<p>只有<code>None</code>与<code>None</code>相同</p>
<p>其次,比较列表时,应该使用<code>==</code>。使用<code>is</code>来比较一个列表意味着,即使列表中有相同的值,如果它不是实际相同的内存地址,它也不会进行相等的比较</p>
<p>另外,由于您只想知道列表是否为空,因此可以使用以下事实:在Python中,空序列被视为<code>False</code>,非空序列被视为<code>True</code>,因此您可以使用布尔条件:<code>if not value:</code>,它将是空列表的<code>True</code>。如果值可以不是列表,那么空字符串、零等也都是<code>False</code>,所以您可能需要更仔细地检查</p>
<p>第三,在对容器进行迭代时,不应修改容器的大小,如<code>dict</code>。
可以对其副本进行迭代,也可以创建要修改的内容的记录,然后执行修改</p>
<p>第一种方法是在副本上迭代:</p>
<pre><code>for key, value in list(d.items()):
if not value:
del d[key]
</code></pre>
<p>第二种方法,制作一组要移除的键:</p>
<pre><code>keys_to_remove = {key for key, value in d.items()
if not value}
for key in keys_to_remove:
del d[key]
</code></pre>