Obtener la forma de una lista en Python

Muhammad Maisam Abbas 19 septiembre 2023
  1. Utilizar la función len() para obtener la forma de una lista unidimensional en Python
  2. Utilizar comprensiones de lista y la función len() para obtener la forma de listas anidadas en Python
  3. Utilizar NumPy para obtener la forma de listas multidimensionales en Python
  4. Utilizar la recursividad para obtener la forma de listas anidadas de forma irregular en Python
  5. Conclusión
Obtener la forma de una lista en Python

En Python, entender la forma de una lista es crucial al trabajar con estructuras de datos, especialmente en escenarios que involucran listas multidimensionales o anidadas. En este artículo se exploran varios métodos para determinar la forma de una lista en Python, desde listas unidimensionales simples hasta listas multidimensionales o anidadas de forma compleja o irregular.

Utilizar la función len() para obtener la forma de una lista unidimensional en Python

El método más simple para obtener la forma de una lista en Python es utilizando la función len(). Esta función proporciona la longitud (número de elementos) de una lista, dando efectivamente el tamaño de la primera dimensión.

La función len() tiene una sintaxis simple y concisa:

len(object)

El objeto es el objeto del cual desea determinar la longitud. Puede ser una secuencia (como una lista, tupla o cadena) o una colección (como un diccionario o conjunto).

El siguiente ejemplo de código muestra cómo podemos utilizar el método len() para obtener la forma de una lista en Python.

my_list = [1, 2, 3, 4, 5]
length = len(my_list)
print("Length of the list:", length)

Resultado:

Length of the list: 5

En este ejemplo, se calcula la longitud de la lista mi_lista y se imprime en la consola.

Utilizar comprensiones de lista y la función len() para obtener la forma de listas anidadas en Python

Además de determinar la longitud de una lista plana (1D), también podemos utilizar la función len() para determinar la forma de listas anidadas (2D o de dimensiones superiores).

En el siguiente ejemplo, determinamos el número de filas y columnas en una lista anidada 2D.

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
num_rows = len(nested_list)
# Assuming all sublists have the same number of columns
num_cols = len(nested_list[0])
print(f"Number of rows: {num_rows}, Number of columns: {num_cols}")

Resultado:

Number of rows: 3, Number of columns: 3

Aquí, num_filas representa el número de filas (sublistas) y num_cols representa el número de columnas (elementos en cada sublista) en la lista anidada.

Utilizar NumPy para obtener la forma de listas multidimensionales en Python

Si deseamos que nuestro código funcione con cualquier lista multidimensional, podemos utilizar el atributo .shape de NumPy. Este atributo devuelve una tupla que contiene el número de elementos en cada dimensión de una matriz.

El paquete NumPy fue diseñado originalmente para ser utilizado con matrices, pero también puede funcionar con listas. NumPy es un paquete externo y no viene preinstalado con Python, por lo que debemos instalarlo antes de usarlo.

El comando para instalar el paquete NumPy se muestra a continuación.

pip install numpy

El siguiente ejemplo de código muestra cómo podemos obtener la forma de una lista multidimensional usando NumPy.

import numpy as np

my_array = np.array([[1, 2, 3], [4, 5, 6]])
num_rows, num_cols = my_array.shape
print(f"Number of rows: {num_rows}, Number of columns: {num_cols}")

Resultado:

Number of rows: 2, Number of columns: 3

Aquí, se crea un array de NumPy mi_array y luego se obtiene su forma utilizando el atributo .shape. Este método funciona sin problemas para matrices multidimensionales, proporcionando tanto el número de filas como el número de columnas.

Utilizar la recursividad para obtener la forma de listas anidadas de forma irregular en Python

En algunos casos, es posible que nos encontremos con listas anidadas de forma irregular, donde la profundidad de anidación varía y las sublistas tienen longitudes diferentes. Para manejar tales escenarios, podemos utilizar una función recursiva.

def get_shape(data):
    if isinstance(data, list):
        return [len(data)] + get_shape(data[0])
    else:
        return []  # Assuming leaf elements are considered as a single column


nested_list = [[1, 2], [3, 4, 5], [6, [7, 8]]]
shape = get_shape(nested_list)
num_rows, num_cols = shape
print(f"Number of rows: {num_rows}, Number of columns: {num_cols}")

Resultado:

Number of rows: 3, Number of columns: 2

La función obtener_forma() navega de forma recursiva a través de la lista anidada, contando el número de filas en cada dimensión y asumiendo que los elementos hoja se consideran como una sola columna. Este enfoque proporciona tanto el número de filas como el número de columnas para listas anidadas de forma irregular.

Conclusión

El enfoque más directo para obtener la forma de una lista unidimensional en Python consiste en utilizar la función len(). Para listas anidadas, las comprensiones de lista junto con la función len() pueden ayudar a determinar de manera efectiva el número de filas y columnas.

Para escenarios más avanzados que involucren matrices multidimensionales, el atributo .shape de NumPy proporciona una forma conveniente de obtener el número de filas y columnas. Por último, al tratar con listas anidadas de forma irregular donde las sublistas tienen profundidades y longitudes variables, se puede utilizar una función recursiva para determinar la forma con precisión.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artículo relacionado - Python List