
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.