Obter a forma da lista em Python

Muhammad Maisam Abbas 19 setembro 2023
  1. Use a função len() para obter a forma de uma lista unidimensional em Python
  2. Use List Comprehensions e a função len() para obter a forma de listas aninhadas em Python
  3. Use NumPy para obter a forma de listas multidimensionais em Python
  4. Use recursão para obter a forma de listas aninhadas irregularmente em Python
  5. Conclusão
Obter a forma da lista em Python

Em Python, entender a forma de uma lista é crucial ao trabalhar com estruturas de dados, especialmente em cenários que envolvem listas multidimensionais ou aninhadas. Este artigo explora vários métodos para determinar a forma de uma lista em Python, que vão desde listas unidimensionais simples até listas multidimensionais ou aninhadas de forma complexa ou irregular.

Use a função len() para obter a forma de uma lista unidimensional em Python

O método mais simples para obter a forma de uma lista em Python é usando a função len(). Ela fornece o comprimento (número de elementos) de uma lista, fornecendo efetivamente o tamanho da primeira dimensão.

A função len() tem uma sintaxe simples e concisa:

len(object)

O objeto é o objeto para o qual você deseja determinar o comprimento. Pode ser uma sequência (como uma lista, tupla ou string) ou uma coleção (como um dicionário ou conjunto).

O exemplo de código a seguir mostra como podemos usar o método len() para obter a forma de uma lista em Python.

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

Saída:

Length of the list: 5

Neste exemplo, o comprimento da lista my_list é calculado e impresso no console.

Use List Comprehensions e a função len() para obter a forma de listas aninhadas em Python

Além de determinar o comprimento de uma lista plana (1D), também podemos usar a função len() para determinar a forma de listas aninhadas (2D ou de dimensão superior).

No exemplo abaixo, determinamos o número de linhas e colunas em uma lista aninhada 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}")

Saída:

Number of rows: 3, Number of columns: 3

Aqui, num_rows representa o número de linhas (sublistas) e num_cols representa o número de colunas (elementos em cada sublista) na lista aninhada.

Use NumPy para obter a forma de listas multidimensionais em Python

Se quisermos que nosso código funcione com qualquer lista multidimensional, podemos usar o atributo .shape do NumPy. Ele retorna uma tupla que contém o número de elementos em cada dimensão de uma matriz.

O pacote NumPy foi originalmente projetado para ser usado com matrizes, mas também pode funcionar com listas. O NumPy é um pacote externo e não vem pré-instalado no Python, portanto, precisamos instalá-lo antes de usá-lo.

O comando para instalar o pacote NumPy é fornecido abaixo.

pip install numpy

O exemplo de código a seguir mostra como podemos obter a forma de uma lista multidimensional usando o 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}")

Saída:

Number of rows: 2, Number of columns: 3

Aqui, é criado um array NumPy my_array, e em seguida a sua forma é obtida usando o atributo .shape. Este método funciona perfeitamente para matrizes multidimensionais, fornecendo tanto o número de linhas quanto de colunas.

Use recursão para obter a forma de listas aninhadas irregularmente em Python

Em alguns casos, podemos encontrar listas aninhadas irregularmente, onde a profundidade do aninhamento varia, e as sublistas têm comprimentos diferentes. Para lidar com tais cenários, podemos usar uma função 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}")

Saída:

Number of rows: 3, Number of columns: 2

A função get_shape() percorre recursivamente a lista aninhada, contando o número de linhas em cada dimensão e assumindo que os elementos-folha são considerados como uma única coluna. Esta abordagem fornece tanto o número de linhas quanto de colunas para listas aninhadas irregularmente.

Conclusão

A abordagem mais direta para obter a forma de uma lista unidimensional em Python envolve o uso da função len(). Para listas aninhadas, a compreensão de listas junto com a função len() pode ajudar a determinar o número de linhas e colunas de forma eficaz.

Para cenários mais avançados envolvendo matrizes multidimensionais, o atributo .shape do NumPy fornece uma maneira conveniente de obter o número de linhas e colunas. Por fim, ao lidar com listas aninhadas irregularmente, onde as sublistas têm profundidades e comprimentos variados, uma função recursiva pode ser usada para determinar a forma com precisão.

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

Artigo relacionado - Python List