在 Python 中,获取列表(list)的长度非常简单,使用内置函数 len() 即可。

下面我将为您详细解释,并提供一些相关的实用技巧。
核心方法:使用 len() 函数
这是最常用、最标准、也是最推荐的方法。
语法:
len(list_name)
示例:

# 创建一个列表
my_list = [1, 2, 3, 4, 5]
# 使用 len() 函数获取列表长度
length = len(my_list)
# 打印结果
print(f"列表是: {my_list}")
print(f"列表的长度是: {length}") # 输出: 列表的长度是: 5
# 创建一个空列表
empty_list = []
print(f"空列表的长度是: {len(empty_list)}") # 输出: 空列表的长度是: 0
为什么 len() 如此高效?
您可能会好奇,len() 为什么能如此快速地返回结果,即使对于包含数百万个元素的列表也是如此?
这是因为 Python 的列表对象内部维护了一个叫做 ob_size 的属性,这个属性记录了列表中当前元素的数量。len() 函数所做的,就是直接读取这个属性的值,而不是去遍历整个列表,这是一个 O(1) 时间复杂度的操作,意味着无论列表多大,获取其长度的时间都是恒定的。
其他相关操作和技巧
除了获取长度,了解列表的“长度”概念还常用于以下场景:
使用 len() 进行循环遍历
这是经典的 for 循环模式,通过索引来访问列表中的每一个元素。
fruits = ["apple", "banana", "cherry"]
for i in range(len(fruits)):
print(f"索引 {i} 对应的元素是: {fruits[i]}")
# 输出:
# 索引 0 对应的元素是: apple
# 索引 1 对应的元素是: banana
# 索引 2 对应的元素是: cherry
注意: 虽然这种方法有效,但在 Python 中,更推荐使用 直接迭代 的方式,因为它更简洁、更 Pythonic(也称为 "EAFP" - Easier to Ask for Forgiveness than Permission)。
# 更推荐的方式
for fruit in fruits:
print(fruit)
# 输出:
# apple
# banana
# cherry
使用 len() 检查列表是否为空
这是一种非常常见的编程模式,用于判断列表中是否有数据。
my_list = [1, 2, 3]
if len(my_list) > 0:
print("列表不为空,可以进行操作。")
else:
print("列表为空,无法操作。")
# 更 Pythonic 的写法(直接在布尔上下文中判断列表)
if my_list:
print("列表不为空,可以进行操作。") # 非空列表在布尔上下文中为 True
else:
print("列表为空,无法操作。") # 空列表在布尔上下文中为 False
使用 len() 处理索引越界错误
在通过循环访问列表元素时,len() 可以帮助你避免 IndexError(索引错误)。
# 错误的示范:当列表长度小于等于3时会报错
# if len(my_list) > 3:
# print(my_list[3]) # 如果列表只有3个元素,索引3是越界的
# 正确的示范:使用小于号
if len(my_list) > 3:
print(my_list[3])
else:
print("列表长度不足4,无法访问索引3的元素。")
# 更安全的方式是使用 try-except 块
try:
print(my_list[3])
except IndexError:
print("捕获到索引错误:列表长度不足。")
| 任务 | 推荐方法 | 说明 |
|---|---|---|
| 获取列表长度 | len(my_list) |
标准、高效、唯一推荐的方法,时间复杂度为 O(1)。 |
| 检查列表是否为空 | if my_list: |
最 Pythonic 的方式,直接利用列表在布尔上下文中的真假值。 |
| 通过索引遍历 | for i in range(len(my_list)): |
传统方法,适用于需要索引的场景,但通常直接迭代更佳。 |
| 安全访问元素 | try-except IndexError |
处理可能发生的索引越界错误,代码更健壮。 |
当您想知道一个 Python 列表有多少个元素时,请毫不犹豫地使用 len() 函数,它是解决这个问题的最佳工具。
