En Python es la única manera de obtener el número de elementos:
arr.__len__()
Si es así, ¿por qué la extraña sintaxis?
En Python es la única manera de obtener el número de elementos:
arr.__len__()
Si es así, ¿por qué la extraña sintaxis?
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.
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.
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
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.