Cuando se trabaja con iterables de Python, encontrar el número de elementos que contiene el iterable es una operación común. Aprenda a utilizar el len incorporado de Python para hallar la longitud de los iterables y mucho más.

Python ofrece un conjunto de estructuras de datos incorpor adas y un conjunto de métodos para trabajar con ellas. Además, hay funciones incorporadas que resultan útiles cuando se trabaja con estas estructuras de datos. Una de estas funciones es len(), que proporciona el número de elementos presentes en un iterable.

En este tutorial, aprenderemos a utilizar la función len () con listas, tuplas, cadenas y más. También veremos algunos casos de uso comunes.

Empecemos!👩‍🏫

Sintaxis de la función len() de Python

He aquí la sintaxis para utilizar la función len de Python:

len(iterable)

Como se ha visto, la función len () requiere un parámetro, que es cualquier iterable válido. El iterable suele ser una lista, tupla o cadena. Pero también puede ser cualquier otro tipo válido.

Vemos que la sintaxis para utilizar la función len() es super sencilla. A continuación, procedamos a codificar algunos ejemplos.

📑 Para los ejemplos de código en este tutorial, puede codificar a lo largo en un REPL de Python.

Uso de la función len() con Iterables

Using-the-len-function-with-Iterables

Con secuencias

Puede utilizar la función len () para hallar la longitud de iterables como listas, tuplas y cadenas.

He aquí un ejemplo:

>>> nums = [9,3,6,1,2]
>>> len(nums)
5

>>> nums_tup = (9,3,6,1,2)
>>> len(nums_tup)
5

Para estas estructuras de datos que almacenan una secuencia, normalmente accederá a los elementos utilizando su índice u obtendrá una porción (subsecuencia) según sea necesario.

Con otras colecciones

También puede utilizar la función len( ) con otras colecciones de Python como conjuntos y diccionarios.

Estas estructuras de datos son colecciones no ordenadas. Aunque puede que no le interese el orden de los elementos, sigue siendo útil obtener el número total de elementos de la colección.

>>> nums_set = set(nums)
>>> len(nums_set)
5

>>> precios = {'Cuaderno':5,'Estuche':7,'Marcapáginas':3,'Bolígrafos':1,'Rotuladores':8}
>>> len(precios)
5

Casos de uso común de la función len() de Python

Hasta ahora, hemos visto ejemplos sencillos de utilización de la función len () para obtener el número de elementos de un iterable. Veamos ahora dónde podemos utilizarla en la práctica.

#1. Iteración utilizando bucles for

El bucle for de Python proporciona una construcción para recorrer iterables en la sintaxis for an item in iterable. Pero si desea acceder al índice de cada elemento en lugar de al propio elemento o tanto al índice como a los elementos juntos, puede utilizar la función range() como se muestra:

>>> nums = [9,2,4,7,8]
>>> for i in range(len(nums)):
... print(f "Índice {i}: {números[i]}")

Dado que range(N) da la secuencia de enteros 0,1,2,…,N – 1, utilizar range(len(nums)) nos da el conjunto de índices válidos para recorrer en bucle.

# Salida
Índice 0: 9
Índice 1: 2
Índice 2: 4
Índice 3: 7
Índice 4: 8

Sin embargo, la forma pitónica recomendada de acceder tanto al índice como al elemento es utilizando la función enumerar:

>>> nums = [9,2,4,7,8]
>>> for idx,num in enumerate(nums):
... print(f "Índice {idx}: {num}")
# Salida
Índice 0: 9
Índice 1: 2
Índice 2: 4
Índice 3: 7
Índice 4: 8

#2. Bucle condicional utilizando bucles while

Digamos que tiene una lista de números nums. El método de lista pop() elimina el último elemento de la lista y lo devuelve.

Mientras la longitud de la lista nums len(nums) sea mayor que cero, hay al menos un elemento que se puede eliminar.

>>> nums = [9,2,4,7,8]
>>> while len(nums) > 0:
... nums.pop()
# Salida
8
7
4
2
9

El ejemplo anterior es una forma más explícita de escribir lo siguiente:

>>> números = [9,2,4,7,8]
>>> while números
... nums.pop()

while nums: es equivalente a la condición «mientras la lista nums no esté vacía».

#3. Comprobación y validación de la longitud de los iterables

Otro uso común de la función len es en la comprobación y validación de la longitud de ciertos iterables.

Aquí comprobamos si nombredeusuario es una cadena válida basándonos en la longitud (calculada mediante la función len () ):

>>> nombre-de-usuario = "otro-usuario-aleatorio"
>>> si len(nombre_usuario) > 10.:
... print("Nombre de usuario demasiado largo; debería tener 10 caracteres como máximo")
... elif len(nombredeusuario) < 5:
... print("Nombre de usuario demasiado corto; debería tener 5 caracteres como mínimo.")
... si no
... print("¡Nombre de usuario válido!")
Nombre de usuario demasiado largo; debería tener 10 caracteres como máximo.

#4. Comprensiones de listas y diccionarios

Las comprensiones en Python proporcionan una sintaxis concisa para construir nuevos iterables a partir de otros existentes. Podemos utilizar funciones incorporadas en una expresión de comprensión.

Comprensión de lista

En esta comprensión de lista, utilizamos la función len() para obtener la longitud de cada cadena de la lista de lenguajes.

>>> idiomas = ['Python','C','Rust','JavaScript']
>>> len_langs = [len(lang) for lang in languages]
>>> len_langs
[6, 1, 4, 10]

Comprensión del diccionario

En esta comprensión del diccionario, utilizamos la lista de lenguajes y la función len( ) para construir un diccionario:

>>> lenguajes = ['Python','C','Rust','JavaScript']
>>> lang_len = {lang:len(lang) for lang in languages}
>>> lang_len
{'Python': 6, 'C': 1, 'Rust': 4, 'JavaScript': 10}

Aquí, las claves y los valores son las cadenas de idioma y la longitud de las cadenas de idioma, respectivamente.

#5. Parámetro clave en la ordenación personalizada

Python tiene el método incorporado sort() para ordenar listas de Python en su lugar y la función sorted() para ordenar listas y otros iterables.

En ambos, puede utilizar el parámetro clave para personalizar la ordenación.

Aquí, ordenamos la lista de idiomas basándonos en la longitud de la cadena.

>>> idiomas = ['Python','C','Rust','JavaScript']
>>> languages.sort(key=len)
>>> lenguajes
['C', 'Rust', 'Python', 'JavaScript']

En el fragmento siguiente, utilizamos la función sorted( ) para obtener una lista ordenada.

>>> idiomas = ['Hindi','Inglés','Alemán','Francés']
>>> sorted(idiomas,clave=len)
['Hindi', 'Alemán', 'Francés', 'Inglés']

En este ejemplo, tanto ‘alemán’ como ‘francés’ tienen 6 caracteres cada uno. Como la función sorted( ) realiza una ordenación estable, se conserva el orden de la lista original.

#6. Longitud de las matrices NumPy

También puede utilizar la función len () con otras estructuras de datos como las matrices NumPy.

>>> importar numpy como np
>>> np_array = np.array([3,4,6,9])
>>> type(np_array)
<clase 'numpy.ndarray'&gt
>>> len(np_array)
4

En este caso, np_array es un vector con 4 elementos. Así que len(np_array ) devuelve 4, el número de elementos presentes en la matriz.

Una matriz es una matriz bidimensional.

Considere el siguiente ejemplo. len(np_array ) es 2, que es el número de filas.

>>> matriz = [[1,2,3],[4,5,6]]
>>> np_array = np.array(matrix)
>>> np_array
array([[1, 2, 3],
       [4, 5, 6]])
>>> len(np_array)
2

Para entenderlo, volvamos a la matriz. Tenemos una estructura de lista anidada en la que la lista exterior contiene dos listas anidadas. Y la función len( ) devuelve el número de elementos de un contenedor (aquí son dos listas):

>>> ayuda(len)
Ayuda sobre la función len incorporada en el módulo builtins:

len(obj, /)
    Devuelve el número de elementos de un contenedor.

Sin embargo, cuando empiece a trabajar con matrices multidimensionales, se recomienda utilizar en su lugar el atributo shape.

>>> np_array.shape
(2, 3)

Errores comunes a evitar cuando se utiliza la función len() de Python

pitfalls

Para finalizar nuestra discusión, repasemos algunos de los escollos comunes que debe evitar al utilizar la función len en Python.

Uso de len() con tipos de datos no iterables

Sabemos que la función len sólo admite iterables válidos como argumento. Lo que significa que si llama a la función len con un tipo de datos no válido-que no sea iterable, se encontrará con errores.

Tales tipos inválidos incluyen los tipos de datos básicos como enteros, números de coma flotante y booleanos:

>>> len(2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module&gt
TypeError: object of type 'int' has no len()

>>> len(True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module&gt
TypeError: object of type 'bool' has no len()

>>> len(3.14)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module&gt
TypeError: object of type 'float' has no len()

En Python, los generadores son opciones eficientes en memoria para casos de uso que requieren la generación de secuencias. El objeto generador devuelve los elementos de la secuencia -bajo demanda- de uno en uno. Pero los objetos generadores no tienen longitud.

Así que se encontrará con errores si intenta calcular la longitud de un objeto generador:

>>> nums_sq = (i*i for i in range(10))
>>> nums_sq
<objeto generador <genexpr> en 0x0157DBC0&gt
>>> len(nums_sq)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module&gt
TypeError: object of type 'generator' has no len()

Uso de len() con tuplas de longitud uno

Si sólo inserta el elemento en una tupla, Python lo interpreta como un único elemento y no como una tupla.

He aquí un ejemplo:

>>> nums = (1)
>>> len(nums)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module&gt
TypeError: object of type 'int' has no len()

Así que cuando tenga una tupla con un solo elemento, inicialícela de esta forma: nombre_tupla = (elt, ) para que se interprete como una tupla:

>>> nums = (1,)
>>> len(nums)
1

Resumiendo

He aquí un resumen de lo que hemos tratado en este tutorial:

  • Puede encontrar el número de elementos de cualquier iterable utilizando la función len() de Python. La sintaxis para utilizar la función length es: len(any-valid-iterable).
  • Esto incluye secuencias como listas, tuplas y cadenas. Y otras colecciones como diccionarios y conjuntos.
  • La función len () se utiliza habitualmente en bucles y comprensiones.
  • También puede utilizar la función len () como parámetro clave cuando necesite personalizar la ordenación en función de la longitud. Por ejemplo: ordenar una lista de cadenas en función de su longitud.

A continuación, aprenda a utilizar la función sum() de Python.