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

arr.__len__()

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


当前回答

你可以用len(arr) 如前面的回答中所建议的,获取数组的长度。如果你想要一个二维数组的维度,你可以使用arr。Shape返回高度和宽度

其他回答

Len (list_name)函数以list作为参数,它调用list的__len__()函数。

获取任何python对象长度的首选方法是将其作为参数传递给len函数。在内部,python将尝试调用传递对象的特殊__len__方法。

只需使用len(arr):

>>> import array
>>> arr = array.array('i')
>>> arr.append('2')
>>> arr.__len__()
1
>>> len(arr)
1

Python建议用户使用len()而不是__len__()来保持一致性,就像其他人说的那样。然而,还有其他一些好处:

对于一些内置类型,如list、str、bytearray等,len()的Cython实现采用了一种快捷方式。它直接返回C结构中的ob_size,这比调用__len__()更快。

如果你对这些细节感兴趣,你可以阅读卢西亚诺·拉玛略的《流利的Python》一书。其中有许多有趣的细节,可能有助于您更深入地理解Python。

你获取任何有意义的东西(列表、字典、元组、字符串……)的长度的方法是对它调用len。

l = [1,2,3,4]
s = 'abcde'
len(l) #returns 4
len(s) #returns 5

“奇怪”语法的原因是python内部将len(object)转换为object.__len__()。这适用于任何物体。所以,如果你在定义某个类,并且它有一个长度是有意义的,只需在它上面定义一个__len__()方法,然后就可以在这些实例上调用len。