在Python中获取数组长度,arr.__len__()是否是首选方式?
在Python中获取数组长度,arr.__len__()是否是首选方式?
这个问题已经在这里有了答案:
Python中如何获取列表中元素的数量(列表的长度)?社区正在审查是否在25天前重新打开此问题。
在 Python 中,是以下方式获取元素数量唯一的方式吗?
arr.__len__()
如果是这样,为什么要使用这种奇怪的语法?
admin 更改状态以发布 2023年5月20日
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)