欢迎访问宙启技术站
智能推送

Python中的len()函数如何工作?

发布时间:2023-06-03 21:23:23

Python中的len()函数是一个内置函数,用于返回给定对象的长度或元素数。它可用于字符串、列表、元组、集合、字典等可迭代对象,并且根据对象的特性而定。这个函数在Python中非常常用,且性能高效,可以高效地快速获取对象的长度,便于进行操作。

len()函数的实现原理

len()函数并不是通过遍历整个对象或逐个计数来获取其长度的,而是利用了Python的语言特性进行了优化。

在Python中,可迭代对象都是通过实现一个特定的魔术方法__len__()来获取其长度的。这个方法会返回对象的长度。当我们调用len()函数时,函数会在对象的类型中查找__len__()方法,并将其结果返回。

我们可以通过实现自定义的__len__()方法来重写len()函数的行为,这样我们可以获取任何对象的长度,即使其没有默认的__len__()方法。这个方法可以返回整数或类似于整数的对象,例如Numpy数组或Pandas数据帧等。

当我们调用len()函数时,Python会优先查找对象的__len__()方法。如果对象没有实现__len__()方法,Python将返回TypeError,或者如果对象不是可迭代的,Python将返回AttributeError。

使用len()函数的示例

# 计算字符串长度

s = "How long is this string?"

print(len(s)) # 24

# 计算列表长度

lst = [1, 2, 3, 4, 5, 6]

print(len(lst)) # 6

#计算元组长度

tp = ('a', 'b', 'c', 'd', 'e')

print(len(tp)) # 5

#计算集合长度

st = set(lst)

print(len(st)) # 6

#计算字典长度

dct = {'a': 1, 'b': 2, 'c': 3}

print(len(dct)) # 3

# 实现自定义类的长度

class CustomList:

    def __init__(self, lst):

        self.lst = lst

    def __len__(self):

        return len(self.lst)

custom_lst = CustomList([1, 2, 3, 4, 5, 6])

print(len(custom_lst)) # 6