目录
描述
len函数返回参数对象(例如字符或字符串、元组、列表和字典等)的项目个数(长度)。
语法
函数返回一个自然数,表示对象的项目个数。
len(object)
名称 | 说明 | 备注 |
object | 序列类型对象 | 不可省略的参数 |
使用示例
序列型对象
len函数返回序列型对象中包含的元素个数:
序列型对象名称 | 描述 |
---|---|
列表 list | 返回列表长度,即列表中包含的元素个数 |
集合 set | 返回集合长度,即集合中包含的元素个数 |
元组 tuple | 返回元组长度,即元组中包含的元素个数 |
字典 dict | 返回字典中存在键的数量 |
字符串 string | 返回字符串中存在的字符数 |
其他 | 返回可迭代对象中包含的元素数,例如range对象类型 |
if __name__ == '__main__':
demo_list = [1, 2, 5, 8]
print(len(demo_list))
# output: 4
demo_set = {"A", "b", "C"}
print(len(demo_set))
# output: 3
demo_tuple = "Beijing", "Hangzhou", "Xi'an"
print(len(demo_tuple))
# output: 3
demo_dict = {
"Washington, D.C.": "US",
"Beijing": "China",
"Tokyo": "Japan",
}
print(len(demo_dict))
# output: 3
demo_str = "TTimeCat"
print(len(demo_str))
# output: 8
demo_iter = range(0, 10)
print(len(demo_iter))
# output: 10
非序列型对象
当参数是非序列型对象时,调用len函数会抛出TypeError异常:
if __name__ == '__main__':
len(3.24)
# TypeError: object of type 'float' has no len()
实现原理
len函数其实调用的是对象的__len__方法。因此我们可以通过重写__len__方法来实现len函数。
例如下面的代码定义了一个Demo类。Demo类中重写了它父类的__len__方法,并返回整数6。因此使用Demo类的实例作为len函数的参数,其结果永远为6:
class Demo(object):
def __len__(self):
return 6
if __name__ == '__main__':
demo = Demo()
print(len(demo))
# output: 6
在实际应用中,对于构建复杂的类,可以通过重写__len__方法来将类内部的数据结构属性通过len函数的调用返回。