Python 如何检查列表是否为空?
Pythonic 的判空写法是 if not my_list:——利用空列表为 False 的真值特性;len(my_list) == 0 也可用但不够简洁。本文给出推荐写法与 None 的区分。
推荐写法:if not my_list:——空列表的布尔值是 False,这是最 Pythonic 的判空方式,比 len(my_list) == 0 更简洁。
三种写法对比
my_list = []
# ✅ 推荐:真值判断
if not my_list:
print("列表为空")
# 可用但啰嗦
if len(my_list) == 0:
print("列表为空")
# ❌ 不要这样:与空列表字面量比较
if my_list == []:
print("能工作,但不推荐")
注意区分 None
def process(items=None):
if items is None: # 没传参
items = []
if not items: # 空列表(含传入的空列表)
return "无数据"
None 和 [] 都不是 True,但语义不同——函数默认参数场景要分开判断。
同类对象
空字符串 ""、空字典 {}、空集合 set()、0 都是 False——同一套 if not x: 写法通吃。
常见问题(FAQ)
Q:NumPy 数组也能 if not arr 吗? 不能——会抛歧义错误;用 arr.size == 0。
Q:为什么不推荐 == []? 创建了新列表对象再比较,效率低且不符合惯用法(PEP 8 明确推荐真值判断)。