Python 内置函数:len()

360影视 日韩动漫 2025-09-03 13:58 2

摘要:在 Python 中,获取对象的长度(元素个数)是最常见的操作之一。无论是字符串的字符数、列表的元素数量,还是字典的键值对数,都可以通过 len 来完成。作为最常用的内置函数之一,len 背后依赖对象的特殊方法 __len__,因此也支持用户自定义类型的扩展。

在 Python 中,获取对象的长度(元素个数)是最常见的操作之一。无论是字符串的字符数、列表的元素数量,还是字典的键值对数,都可以通过 len 来完成。作为最常用的内置函数之一,len 背后依赖对象的特殊方法 __len__,因此也支持用户自定义类型的扩展。

一、函数语法

len(obj)

参数:

obj:必填。一个支持长度计算的对象(实现了 __len__ 方法)。常见类型包括字符串、列表、元组、字典、集合、range、bytes 等。

返回值:

返回一个整数,表示对象中元素的数量。

二、基础用法举例

1、字符串长度

print(len("Python")) # 6

2、列表长度

nums = [1, 2, 3, 4]print(len(nums)) # 4

3、字典长度(键值对数)

d = {"a": 1, "b": 2, "c": 3}print(len(d)) # 3

4、集合长度(去重后元素个数)

s = {1, 2, 2, 3}print(len(s)) # 3

5、结合 创建数字列表

data = ["apple", "banana", "cherry"]# 用 len 获取长度,再用 range 生成索引列表nums = list(range(len(data)))print(nums) # 输出:[0, 1, 2]

三、len 特点

1、依赖 __len__ 方法

len(obj) 的本质调用是 obj.__len__。

所以自定义类只要实现 __len__,就能支持 len。

2、支持内置可迭代容器

如 str、list、tuple、dict、set、frozenset、range、bytes、bytearray 等。

3、返回值保证非负

__len__ 必须返回一个非负整数,否则会触发 TypeError 或 ValueError。

四、进阶技巧

1、结合条件判断

nums = list(range(5))if len(nums) > 0:print("列表非空")

更 Pythonic 的写法是:

if nums: # 直接利用布尔判断print("列表非空")

2、处理嵌套对象

matrix = [[1, 2], [3, 4], [5, 6]]print(len(matrix)) # 3,外层列表长度print(len(matrix[0])) # 2,内层列表长度

3、用在或结果上

print(len(range(10))) # 10

注意:对生成器(如 (x for x in range(10)))直接调用 len 会报错,因为生成器没有 __len__ 方法。

4. 自定义类中实现 __len__

class Box:def __init__(self, *items):self.items = list(items)def __len__(self):return len(self.items)b = Box("apple", "banana")print(len(b)) # 2

五、补充说明

1、与布尔判断的关系

if obj: 在布尔上下文中会先尝试 __len__,长度为 0 时结果为 False。

2、与空对象的关系

len() == 0,len("") == 0,len({}) == 0,都表示空容器。

3、性能考虑

对内置容器而言,len 的时间复杂度是 O(1),因为长度在对象内部保存,不需遍历。

小结

len 是 Python 最常用的内置函数之一,能快速返回对象的长度。它适用于几乎所有内置容器,也支持用户自定义对象。理解其与 __len__ 的关系,有助于灵活扩展类的行为,并掌握 Python 判断对象“空/非空”的底层逻辑。

“点赞有美意,赞赏是鼓励”

来源:秀丽教育

相关推荐