在Python中获取数组的长度
在Python中 ,下面是获取元素数量的唯一方法吗?
arr.__len__()
如果是这样,为什么奇怪的语法?
my_list = [1,2,3,4,5] len(my_list)
元组的相同工作:
my_tuple = (1,2,3,4,5) len(my_tuple)
而string,其实只是字符数组:
my_string = 'hello world' len(my_string)
这是故意这样做,以便列表,元组和其他容器types不需要明确实现一个公共的.length()
方法,而是你可以检查任何实现“魔术”的len()
__len__()
方法。
当然,这看起来可能是多余的,但是长度检查实现可能会有相当大的差异,即使在相同的语言中。 看到一个集合types使用.length()
方法,而另一个types使用.length
属性并不罕见,而另一个types使用.count()
。 拥有语言级别的关键字可以统一所有这些types的入口点。 所以即使是你可能不认为是元素列表的对象,仍然可以进行长度检查。 这包括string,队列,树木等
len()
的function本质也适用于编程的function风格。
lengths = map(len, list_of_containers)
你采取一些有意义的东西(列表,字典,元组,string…)的方法是调用len
。
l = [1,2,3,4] s = 'abcde' len(l) #returns 4 len(s) #returns 5
“奇怪”语法的原因是内部python将len(object)
转换为object.__len__()
。 这适用于任何对象。 所以,如果你正在定义一些类,并且它有一个长度是有意义的,只要定义一个__len__()
方法,然后可以在这些实例上调用len
。
获取任何python对象长度的首选方法是将其作为parameter passing给len
函数。 在内部,python将尝试调用传递的对象的特殊__len__
方法。
Python使用鸭子打字 :它不关心对象是什么,只要它具有适当的接口。 在对象上调用内置函数len()时,实际上正在调用其内部的__len__方法。 自定义对象可以实现这个接口,len()将返回答案,即使这个对象在概念上不是一个序列。
有关接口的完整列表,请看这里: http : //docs.python.org/reference/datamodel.html#basic-customization
只要使用len(arr):
>>> import array >>> arr = array.array('i') >>> arr.append('2') >>> arr.__len__() 1 >>> len(arr) 1
您可以使用len(arr)
如前面的答案中所build议的那样获取数组的长度。 如果你想要二维数组的尺寸,你可以使用arr.shape
返回高度和宽度
len(list_name)
函数将list作为参数,并调用list的__len__()
函数。
len
函数是要使用的函数。 将arr
作为parameter passing给你的len
函数,即len(arr)
。 这将返回数组的长度。