在Python中,以下是获取元素数量的唯一方法吗?
arr.__len__()
如果是这样,为什么会有奇怪的语法?
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()
len()
__len__()
当然,这似乎是多余的,但长度检查实现可能会有很大差异,即使在同一种语言中也是如此。一种集合类型使用.length()方法而另一种类型使用.length属性而另一种使用.count(). 拥有一个语言级别的关键字统一了所有这些类型的入口点。因此,即使您可能不认为是元素列表的对象仍然可以进行长度检查。这包括字符串、队列、树等。
.length
.count()
的函数性质len()也很适合于函数式编程风格。
lengths = map(len, list_of_containers)