¡Bienvenido(a)! Si deseas aprender a crear una lista vacía en Python y a comprobar si una lista está vacía, este artículo es para ti.

Aprenderás:

  • Cómo crear una lista vacía con corchetes [] en Python.
  • Cómo crear una lista vacía con list() en Python.
  • Usos comunes de estas alternativas en Python.
  • La eficiencia de cada una de estas alternativas. Usaremos el módulo timeit para comprobar cuál de ellas tiende a ser más eficiente.

¡Comencemos! ✨

🔹 Crear una Lista Vacía Con Corchetes []

En Python puedes crear una lista vacía con corchetes vacíos []:

image
Lista Vacía en Python.

💡 Dato: Estamos asignando la lista vacía a una variable (representada en el diagrama por <var>) para acceder a la lista en nuestro programa a través de esta variable y modificarla si es necesario.

Por ejemplo:

mi_lista = []

La lista vacía tendrá tamaño 0, como podemos comprobar con la función len:

>>> mi_lista = []
>>> len(mi_lista)
0

💡 Dato: El tamaño de una lista es el número de elementos que contiene.

Las listas vacías son valores "falsy", lo cual significa que evalúan a False (falso) en un contexto booleano:

>>> mi_lista = []
>>> bool(mi_lista)
False

💡 Dato: Un contexto booleano es una parte del código en la cual es necesario determinar si un valor es True (verdadero) o False (falso).

Agregar Elementos a una Lista Vacía

Si necesitas agregar elementos a una lista vacía, puedes hacerlo llamando a los métodos append() e insert():

  • append() agrega un elemento al final de la lista.
  • insert() agrega un elemento en una posición específica de la lista. Esta posición representa el índice de la lista.

Como las listas pueden evaluar a True o False dependiendo de si están vacías o no, podemos usarlas directamente en las condiciones de nuestros condicionales.

Por ejemplo:

mi_lista = []

if mi_lista:
	print("Esta lista no está vacía")
else:
	print("Esta lista está vacía")

El mensaje que se muestra cuando ejecutamos el código es:

Esta lista está vacía

La lista evalúa a False (falso), por lo que se ejecuta la cláusula else.

En general, para un condicional if/else:

  • Si la lista no está vacía, evalúa a True (verdadero) y se ejecuta la cláusula if.
  • Si la lista está vacía, evalúa a False (falso) y se ejecuta la cláusula else.

Ejemplo: Agregar Elementos

  • En el siguiente ejemplo creamos una lista vacía y la asignamos a la variable mi_lista.
  • Luego, usando un bucle o ciclo for, agregamos una secuencia de elementos (números enteros) a la lista.
>>> mi_lista = []

>>> for num in range(3, 15, 2):
	mi_lista.append(num)

Si mostramos el valor de la variable para comprobar si los números fueron añadidos exitosamente, podemos confirmar que la lista ya no está vacía:

>>> mi_lista
[3, 5, 7, 9, 11, 13]

💡 Dato: Normalmente usamos el método append() para agregar un elemento a una lista vacía, pero también puedes agregar un elemento con el método insert(), insertándolo en el índice 0. Cuando llamamos al método insert(), debemos especificar dos valores (en este orden):

  • El índice donde deseamos agregar el elemento.
  • El elemento que deseamos agregar a la lista.

Por ejemplo:

>>> mi_lista = []

>>> mi_lista.insert(0, 1.5) # Agregar el número 1.5 en el índice 0

>>> mi_lista
[1.5]

🔸 Crear una Lista Vacía Con list()

También podemos crear una lista vacía con el constructor de tipo list().

Veamos cómo puedes hacerlo.

Según la documentación oficial de list():

Si no se pasan parámetros, se construye una nueva lista vacía, [].
image-1
Crear una lista vacía con list() y asignarla a una variable.

Por ejemplo:

mi_lista = list()

La lista está vacía (tiene tamaño 0), como podemos comprobar con la función len:

>>> mi_lista = list()

>>> len(mi_lista)
0

Además, evalúa a False (falso) en un contexto booleano porque está vacía. Podemos comprobarlo con la función bool():

>>> mi_lista = list()

>>> bool(mi_lista)
False

Ejemplo: Agregar Elementos

Luego de crear una lista vacía con list(), podemos trabajar con ella en nuestro programa.

Por ejemplo, podemos agregar elementos a la lista con el método append():

>>> mi_lista = list()

>>> for num in range(3, 15, 2):
	mi_lista.append(num)

El resultado será una lista con los siguientes elementos:

>>> mi_lista
[3, 5, 7, 9, 11, 13]

🔹 Cuándo Usar [] y list()

Ahora que ya sabes cómo crear una lista vacía en Python con ambas alternativas, veamos los usos frecuentes cada una de ellas:

  • Comúnmente usamos corchetes [] para crear listas vacías en Python porque esta sintaxis es más concisa. Como veremos en tan solo un momento, también puede ser ligeramente más eficiente.
  • La función list() puede ser usada para crear listas vacías pero es comúnmente utilizada para crear listas a partir de los elementos de secuencias o iterables tales como cadenas de caracteres o tuplas. Por ejemplo:
>>> mi_tupla = (3, 4, 5, 6, 7)

>>> mi_lista = list(mi_tupla)

>>> mi_lista
[3, 4, 5, 6, 7]

🔸 Eficiencia de [] y list()

Seguramente debes estar preguntándote si hay alguna forma de comprobar que [] puede ser más eficiente que list() en Python. La respuesta es que sí la hay. Veamos de qué se trata.

Importar timeit

Usaremos el módulo timeit para verificar la eficiencia de ambas alternativas.

Para tener acceso a timeit en tu programa, primero debes importarlo. En este ejemplo usaremos la siguiente instrucción import:

>>> import timeit

Esta debe ser la primera línea de tu programa.

Llamar a la Función

Específicamente, llamaremos a la función timeit de este módulo, la cual mide el tiempo requerido para ejecutar ciertas líneas de código un cierto número de veces.

Podemos llamar a la función especificando el código que queremos ejecutar y cuántas veces queremos repetir la prueba:

image-4

Esta es parte de la descripción de la función en la documentación de Python:

class timeit.Timer(stmt='pass', setup='pass', timer=, globals=None)
timeit(number=1000000)
Tiempo number ejecuciones de la instrucción principal. Esto ejecuta la instrucción setup una vez y, a continuación, retorna el tiempo que se tarda en ejecutar la instrucción principal varias veces, medida en segundos como un float. El argumento es el número de veces que se ejecuta el bucle, por defecto a un millón. La instrucción principal, la instrucción setup y la función timer que se va a utilizar se pasan al constructor.

💡 Dato: El código se repite muchas veces para reducir el efecto de las diferencias de tiempo que pueden ser generadas por factores externos, tales como otros procesos que están siendo ejecutados en el dispositivo al momento de llamar a la función. Esto permite que los resultados sean más confiables al momento de analizarlos y generar conclusiones.

Ejecutar el Código

Comencemos a escribir nuestro programa.

🚦 En sus marcas... Listos... ¡Ya!

Primero, debemos importar el módulo:

>>> import timeit

Luego, debemos medir el tiempo que toma crear una lista con [] y list(). Estas son las pruebas que realicé en mi dispositivo con mi versión de Python y los resultados que obtuve:

Tiempo de Ejecución con []:

>>> timeit.timeit('[]', number=10**4)
0.0008467000000109692

Tiempo de Ejecución con list():

>>> timeit.timeit('list()', number=10**4)
0.002867799999989984

💡 Dato: El código que deseas ejecutar debe estar representado como una cadena de caracteres, por lo que debes rodearlo con comillas simples '' or dobles "". El valor retornado por la función timeit es el tiempo expresado en segundos.

Comparemos ambos resultados:

  • Para []: 0.0008467000000109692
  • Para list(): 0.002867799999989984

Puedes ver que para esta prueba, [] fue más rápida que list(). Hubo una diferencia de aproximadamente 0.002 segundos entre ambas pruebas:

>>> 0.002867799999989984 - 0.0008467000000109692
0.0020210999999790147

Estoy segura de que después de ver estos resultados, te estarás preguntando "¿Por qué list() es menos eficiente que [] si ambas hacen exactamente lo mismo?"

La respuesta es que list() tiende a ser menos eficiente porque require ciertos pasos adicionales que ocurren "detrás de bastidores" para crear la lista vacía mientras que [] es como un atajo que nos permite crear la lista de forma más eficiente.

Esta diferencia de tiempo es muy pequeña y en realidad no afectaría mucho la eficiencia de tu programa, pero siempre es interesante conocer más sobre las alternativas que podemos usar en nuestro código.

🔹 En Resumen

Puedes crear una lista vacía en Python con estas dos alternativas:

  • Primero, puedes usar corchetes vacíos [], lo cual tiende a ser más conciso y más rápido. Esta es la alternativa que comúnmente utilizamos para crear una lista vacía en Python.
  • Además, puedes usar el constructor de tipo list() sin especificar argumentos, lo cual también crea una lista vacía.  

Espero que te haya gustado mi artículo y que te haya sido de utilidad. Ahora puedes crear y trabajar con listas vacías en tus proyectos de Python.