Obter a forma da lista em Python
-
Use a função
len()
para obter a forma de uma lista unidimensional em Python -
Use List Comprehensions e a função
len()
para obter a forma de listas aninhadas em Python - Use NumPy para obter a forma de listas multidimensionais em Python
- Use recursão para obter a forma de listas aninhadas irregularmente em Python
- Conclusão
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.
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