小编典典

arr.__len__() 是在 Python 中获取数组长度的首选方法吗?

all

Python中,以下是获取元素数量的唯一方法吗?

arr.__len__()

如果是这样,为什么会有奇怪的语法?


阅读 134

收藏
2022-03-02

共1个答案

小编典典

my_list = [1,2,3,4,5]
len(my_list)
# 5

同样适用于元组:

my_tuple = (1,2,3,4,5)
len(my_tuple)
# 5

还有字符串,它们实际上只是字符数组:

my_string = 'hello world'
len(my_string)
# 11

它是故意这样做的,因此列表、元组和其他容器类型或可迭代对象并不都需要显式实现公共.length()方法,而是您可以检查len()任何实现“魔术”__len__()方法的东西。

当然,这似乎是多余的,但长度检查实现可能会有很大差异,即使在同一种语言中也是如此。一种集合类型使用.length()方法而另一种类型使用.length属性而另一种使用.count().
拥有一个语言级别的关键字统一了所有这些类型的入口点。因此,即使您可能不认为是元素列表的对象仍然可以进行长度检查。这包括字符串、队列、树等。

的函数性质len()也很适合于函数式编程风格。

lengths = map(len, list_of_containers)
2022-03-02