Cómo hacer una lista de listas en Python – ¡Fácil!

Hoy veremos cómo crear una lista de listas en Python. Hay varias formas de hacerlo. Comencemos y veamos algunos de los métodos.

 

For Loop y el método append()

El primer método es bastante simple y directo. Inicialmente, creamos una lista vacía. lst1 , luego ejecutamos un bucle y agregamos listas a lst1 .



Si queremos insertar norte sublistas, entonces tendremos que ejecutar un ciclo norte veces usando el rango() función. Entendamos este concepto usando un ejemplo.

 

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

 

Producción

 

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

 

Aquí, el bucle se ejecuta cinco veces. En cada iteración, agregamos una lista vacía a lst1 , que nos permite crear una lista de listas, como puede ver en la salida.

 

Lista de comprensión

Otro método es usar la comprensión de listas que nos proporciona una forma más fácil y concisa. Veamos un ejemplo.

 

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

 

Producción

 

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

 

Una lista por comprensión siempre devuelve una lista cuyo contenido depende de las expresiones en el bucle for y de la condición if (si existe).

En el ejemplo anterior, agregamos una sublista cada vez que se ejecuta el bucle y, por lo tanto, el resultado contiene una lista de listas.

 

Biblioteca NumPy

Otro método para hacer una lista de listas es NumPy . Es una poderosa biblioteca para cálculos científicos.

Proporciona varios métodos y herramientas para crear y trabajar con matrices multidimensionales de manera eficiente.

Podemos hacer una lista de listas usando el vacío() método de la biblioteca NumPy. Necesitamos pasar una tupla que contenga el tamaño de la fila y el tamaño de la columna.

También toma un tipo de datos. De forma predeterminada, creará una matriz de tipo numpy.float64 .

Además, devuelve un ndarray (arreglo N-Dimensional) de tamaño y tipo fijos. Para convertirlo en una lista, usaremos el Listar() método.

Considere el siguiente 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)}")

 

Producción

 

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

 

Podemos hacer lo mismo usando el numpy.ndarray() método. Vamos a ver.

 

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

 

 

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

 

La función mapa()

También podemos crear una lista de listas utilizando la función integrada de Python. mapa() función. mapa() toma dos argumentos: una función y un iterable.

yo t llama a la función dada para cada elemento de un iterable y devuelve un iterador. Considere el siguiente ejemplo.

 

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

 

Producción

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

 

Primero, creamos una lista de norte elementos que contienen Ninguna . Luego, pasamos esta lista a map().

Cada elemento de la lista externa se asigna a una lista vacía mediante la función anónima. Finalmente, convertimos el iterador devuelto (objeto de mapa) en una lista para obtener una lista de listas.

 

Qué no hacer

Podemos crear una lista unidimensional de la siguiente manera.

 

lst = [None]*n

 

Aquí, primero será de tamaño norte , y cada artículo tendrá el valor Ninguna . En otras palabras, cualquier valor que pongamos dentro de los corchetes se repite norte veces.

Entonces, si ponemos [] dentro, obtendremos una lista de listas, ¿no? Bueno, sí, pero cada elemento se refiere al mismo objeto (el primero). En pocas palabras, obtenemos norte mismas sublistas. vamos a ver.

 

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

 

Producción

 

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

 

Considere otro 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 anterior también crea cinco referencias de la variable primero . Entonces, new_list[0], new_list[1], … new_list[n-1] se refieren a la misma dirección señalada por primero .

 

Producción

 

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

 

Usar lst[:] en vez de primero o copie la lista explícitamente usando Copiar() desde el Copiar módulo.