Python 如何检查列表是否为空?

Pythonic 的判空写法是 if not my_list:——利用空列表为 False 的真值特性;len(my_list) == 0 也可用但不够简洁。本文给出推荐写法与 None 的区分。

最佳实践
Python 如何检查列表是否为空?封面

推荐写法: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,但语义不同——函数默认参数场景要分开判断。

对 list 而言检查的是长度,不是元素真值:[False]、[0] 和 [None] 都不是空列表。

同类对象

空字符串 ""、空字典 {}、空集合 set()、0 都是 False——同一套 if not x: 写法通吃。

常见问题(FAQ)

Q:NumPy 数组也能 if not arr 吗? 不应这样判断数组是否为空:多元素数组会抛歧义错误,单元素和空数组行为还与大小及 NumPy 版本有关;用 arr.size == 0。

Q:为什么不推荐 == []? 它创建新列表且表达不如真值判断直接,但不能据此保证所有场景性能更慢(PEP 8 明确推荐真值判断)。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台