La len()
función en Python tiene una característica muy peculiar sobre la que uno se había preguntado muchas veces. No lleva absolutamente nada de tiempo, e igual tiempo, para calcular las longitudes de las estructuras de datos iterables (string, array, tupla, etc.), independientemente del tamaño o tipo de datos. Esto obviamente implica O(1)
complejidad temporal. Pero te has preguntado ¿Cómo?
Python sigue la idea de que mantener la longitud como un atributo es barato y fácil de mantener. len()
es en realidad una función que llama al método ‘__len__()’. Este método se define en las clases predefinidas de estructuras de datos iterables. Este método en realidad actúa como un contador, que se incrementa automáticamente a medida que se definen y almacenan los datos. Por lo tanto, cuando llama a la len()
función, no le da al intérprete el comando para encontrar la longitud recorriendo, sino que le pide al intérprete que imprima un valor que ya está almacenado. Por lo tanto, len()
la función en Python se ejecuta en O(1)
complejidad.
Por lo tanto, también se puede definir como:
def length(ar): # calling the internally # defined __len__() method return ar.__len__() # Driver code a = [1, 2, 3, 4] print(length(a))
Producción:
4
Nota: Esto puede parecer muy beneficioso, pero recuerde que supone una carga considerable para el intérprete durante la fase de definición de datos. Esta es una de las muchas razones por las que Python es más lento durante la programación competitiva, especialmente con grandes entradas.