Python中如何检查列表是否同时包含空值与非空值?
问题分析与修正
你的代码存在几个关键问题,导致结果错误:
- 空值判断错误:你用
float('NaN')代表空值,但列表里的空值是字符串'',NaN是数值类型的非数字值,和空字符串完全不是一回事。 - 逻辑表达式完全错误:
float('NaN') and not_empth in list这个条件永远为False——因为NaN在布尔判断中被视为False,False和任何值进行and运算结果都是False;另外not_empth是not float('NaN')也就是True,而你的列表里根本没有True这个元素,这逻辑完全偏离需求。 - 变量名拼写错误:
not_empth应该是not_empty,不过这不是导致结果错误的核心原因。
正确实现方式
要检查列表是否同时包含空字符串和非空字符串,只需要验证两个条件同时成立:
- 列表里存在空字符串:
'' in your_list(注意不要用list当变量名,这是Python内置类型) - 列表里存在非空字符串:用
any(item != '' for item in your_list)来快速判断是否有至少一个非空元素
修正后的代码:
your_list = ['', 'a', 'b', ''] # 同时检查存在空值和非空值 if '' in your_list and any(item != '' for item in your_list): print('List has both empty and non-empty values.') else: print('List does not have both empty and non-empty values.')
运行这段代码会输出正确的结果:List has both empty and non-empty values.
另外也可以用另一种方式验证,比如分别统计空值和非空值的数量:
your_list = ['', 'a', 'b', ''] empty_count = your_list.count('') non_empty_count = len(your_list) - empty_count if empty_count > 0 and non_empty_count > 0: print('List has both empty and non-empty values.') else: print('List does not have both empty and non-empty values.')
内容的提问来源于stack exchange,提问作者CanaryTheBird
相关产品推荐
相关产品推荐

