292 votos

Obtener la longitud de una matriz en Python

En Python es la única manera de obtener el número de elementos:

arr.__len__()

Si es así, ¿por qué la extraña sintaxis?

555voto

Soviut Puntos 26384
mylist = [1,2,3,4,5]
len(mylist)

Lo mismo funciona para las tuplas:

mytuple = (1,2,3,4,5)
len(mytuple)

Fue hecho intencionalmente de esta manera de modo que las listas, tuplas y otros tipos de contenedores no todos necesitaban implementar explícitamente una .length() en lugar de eso, puedes comprobar el len() de cualquier cosa que implemente la "magia __len__() método. Así que incluso los objetos que no se consideren listas de elementos podrían ser comprobados en cuanto a su longitud. Esto incluye cuerdas, colas, árboles, etc.

27voto

rz. Puntos 7261

La forma en que se toma una longitud de cualquier cosa para la que tenga sentido (una lista, un diccionario, una tupla, una cuerda, ...) es llamar a len en él.

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

La razón de la "extraña" sintaxis es que internamente Python traduce len(object) en object.__len__(). Esto se aplica a cualquier objeto. Así que, si estás definiendo alguna clase y tiene sentido que tenga una longitud, sólo define una __len__() en él y luego se puede llamar len en esos casos.

17voto

David Locke Puntos 4419

La forma preferida de obtener la longitud de cualquier objeto en Python es pasarla como argumento a la función len. Internamente, Python intentará llamar al especial __len__ el método del objeto que se pasó.

16voto

UncleZeiv Puntos 9033

Python utiliza duck typing No le importa lo que un objeto es siempre y cuando tenga la interfaz apropiada para la situación en cuestión. Cuando llamas a la función incorporada len() en un objeto, en realidad estás llamando a su método interno __len__. Un objeto personalizado puede implementar esta interfaz y len() devolverá la respuesta, incluso si el objeto no es conceptualmente una secuencia.

Para una lista completa de las interfaces, eche un vistazo aquí: http://docs.python.org/reference/datamodel.html#basic-customization

11voto

Tim Lesher Puntos 3056

Sólo usa len(arr):

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

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X