Como fazer uma lista de listas em Python – Fácil!

Hoje, veremos como criar uma lista de listas em Python. Existem várias maneiras de fazer isso. Vamos começar e ver alguns dos métodos.

For Loop e o método append()

O primeiro método é bastante simples e direto. Inicialmente, criamos uma lista vazia lst1 , então executamos um loop e anexamos listas a lst1 .



Se quisermos inserir n sublistas, então teremos que executar um loop n vezes usando o variar() função. Vamos entender esse conceito usando um exemplo.

lst1 = []
for i in range(0, 5):
  lst1.append([])
print(lst1)

Resultado

[[], [], [], [], []]

Aqui, o loop é executado cinco vezes. Em cada iteração, anexamos uma lista vazia a lst1 , que nos permite criar uma lista de listas, como você pode ver na saída.

Compreensão da lista

Outro método é usar a compreensão da lista que nos fornece uma maneira mais fácil e concisa. Vejamos um exemplo.

lst  = [[] for i in range(0, 5)]
print(lst)

Resultado

[[], [], [], [], []]

Uma compreensão de lista sempre retorna uma lista cujo conteúdo depende das expressões no loop for e na condição if (se houver).

No exemplo acima, adicionamos uma sublista toda vez que o loop é executado e, portanto, o resultado contém uma lista de listas.

Biblioteca NumPy

Outro método para fazer uma lista de listas é NumPyName . É uma biblioteca poderosa para cálculos científicos.

Ele fornece vários métodos e ferramentas para criar e trabalhar com arrays multidimensionais de forma eficiente.

Podemos fazer uma lista de listas usando o vazio() método da biblioteca NumPy. Precisamos passar uma tupla contendo o tamanho da linha e o tamanho da coluna.

Também recebe um tipo de dados. Por padrão, ele criará um array do tipo numpy.float64 .

Além disso, ele retorna um ndarray (matriz N-Dimensional) de tamanho e tipo fixos. Para convertê-lo em uma lista, usaremos o listar() método.

Considere o seguinte código:

import numpy as np
np_array = np.empty((5, 0))
lst = np_array.tolist()
print(lst)
print(f"Type of np_array: {type(np_array)} and the type of lst: {type(lst)}")

Resultado

[[], [], [], [], []]
Type of np_array: <class 'numpy.ndarray'> and the type of lst: <class 'list'>

Podemos fazer o mesmo usando o numpy.ndarray() método. Vamos ver.

import numpy as np
np_array = np.ndarray((5, 0))
lst = np_array.tolist()
print(lst)

[[], [], [], [], []]

A função map()

Também podemos criar uma lista de listas usando o built-in do Python mapa() função. mapa() recebe dois argumentos: uma função e um iterável.

EU t chama a função dada para cada item de um iterável e retorna um iterador. Considere o exemplo a seguir.

n=5
lst = [None]*n
lst = list(map(lambda x: [], lst))
print(lst)

Resultado

[[], [], [], [], []]

Primeiro, criamos uma lista de n elementos contendo Nenhum . Então, passamos esta lista para map().

Cada item da lista externa é mapeado para uma lista vazia usando a função anônima. Por fim, convertemos o iterador retornado (objeto de mapa) em uma lista para obter uma lista de listas.

O que não fazer

Podemos criar uma lista unidimensional da seguinte maneira.

lst = [None]*n

Aqui, primeiro será do tamanho n , e cada item terá o valor Nenhum . Em outras palavras, qualquer valor que colocamos dentro dos colchetes é repetido n vezes.

Então, se colocarmos [] dentro dele, obteremos uma lista de listas, não? Bem, você faz, mas cada item se refere ao mesmo objeto (o primeiro). Simplificando, obtemos n mesmas sublistas. vamos ver.

n=5
lst = [[]]*n
print(lst)
#append an item to the last list
lst[n-1].append(3)
print(lst)

Resultado

[[], [], [], [], []]
[[3], [3], [3], [3], [3]]

Considere outro código.

n=5
lst = []
new_list =  [lst for i in range(0, n)]
#append an item to the last list
new_list[n-1].append(3)
print(lst)
print(new_list)

Este código acima também cria cinco referências da variável primeiro . Então, new_list[0], new_list[1], … new_list[n-1] referem-se ao mesmo endereço apontado por primeiro .

Resultado

[3]
[[3], [3], [3], [3], [3]]

Usar lst[:] ao invés de primeiro ou copie a lista explicitamente usando cópia de() de cópia de módulo.