Python列表推导式未将空字符串识别为False的问题排查
问题分析与解决方案:筛选Python中的假值元素
你的代码核心问题是错误使用了严格相等判断i == False,但Python中被视为布尔值False的对象(比如空字符串""、空列表[]、None、空元组()、空字典{}、数字0等),并不都满足与False严格相等的条件:
"" == False→False[] == False→FalseNone == False→False
这些元素在布尔上下文中会被判定为False,但和False本身不是同一个对象/值,所以你的列表推导式无法筛选出它们,导致第二个测试用例返回空列表,不符合预期。
修正后的代码
要正确筛选所有被Python视为False的元素,应该直接利用Python的布尔上下文判断,使用not i来检查元素的布尔值:
def find_the_falsehoods(lst): return [i for i in lst if not i]
验证测试用例
这个修正后的代码可以通过所有给出的测试:
- 对于
["", "a", "ab"],not ""为True,会被选中,返回[""] - 对于
[None, 1, [], [0], 0],not None、not []、not 0均为True,返回[None, [], 0] - 对于
[[[]]],该列表非空,not [[[]]]为False,返回[]
内容的提问来源于stack exchange,提问作者kansha
相关产品推荐
相关产品推荐

