Agregar vs extender en listas de Python

A

Agregar elementos a una lista

Las listas son una de las estructuras de datos más útiles disponibles en Python, o realmente en cualquier lenguaje de programación, ya que se utilizan en muchos algoritmos y soluciones diferentes.

Una vez que hemos creado una lista, a menudo es posible que necesitemos agregarle nuevos elementos, ya sea al final, al principio o en algún punto intermedio. Python nos ofrece tres métodos diferentes para hacerlo. En este artículo mostraré las diferencias entre append, extendy insert enumerar métodos.

Adjuntar

Este método agrega un elemento al final de una lista existente. La sintaxis para usarlo es:

a.append(x)

Aquí la variable a es nuestra lista, y x es el elemento a agregar. Esta expresión es equivalente a a[len(a):] = [x].

Por ejemplo, aquí se explica cómo usarlo para colocar el elemento “y” al final de nuestra lista, a:

a = [1, 'x', 2]
a.append('y')

print(a)

La ejecución de este código dará como resultado el siguiente resultado:

$ python append.py
[1, 'x', 2, 'y']

Insertar

Este método inserta un elemento en una posición específica dentro de la lista dada. La sintaxis es:

a.insert(i, x)

Aquí el argumento i es el índice del elemento antes del cual insertar el elemento x. Así, a.insert(len(a), x) es lo mismo que a.append(x). Aunque, el poder de este método radica en usarlo para colocar elementos en algún lugar de la lista y no al final. Si solo necesita agregar un elemento al final de la lista, entonces append funciona bien para eso y es más rápido (lo que es importante para listas grandes).

Por ejemplo:

a = [1, 'x', 'y']
a.insert(2, 2)

print(a)

Este código dará como resultado la siguiente salida:

$ python insert.py
[1, 'x', 2, 'y']

Como puede ver, el elemento dado se coloca en cualquier lugar de la lista que especifiquemos. Esto funciona bien cuando tiene una lista en la que se ordenan sus elementos, por lo que no puede simplemente agregar su elemento al final, como lo haría con append.

Ampliar

Este método agrega elementos (¡observe su plural!) A una lista agregando todos los elementos del iterable que le pasa. La lista resultante es una que contiene todos los elementos de ambas listas.

La sintaxis para usar este método es:

a.extend(x)

En este caso a es nuestra lista y x es un objeto iterable, como otra lista. Este método es equivalente a a[len(a):] = x.

Por ejemplo:

a = [1, 'x', 'y']
b = [1, 2]
a.extend(b)

print(a)

La ejecución de este código da como resultado el siguiente resultado:

$ python extend.py
[1, 'x', 'y', 1, 2]

Observe cómo se combinaron las dos listas, una tras otra.

En Python, también puede lograr los mismos resultados haciendo una simple suma. Entonces a + b, en este caso, daría como resultado la misma matriz exacta que nuestro script anterior. Esto es gracias a la __add__() que se está implementando en las listas, pero eso está fuera del alcance de este artículo.

Comparación de cada método

Para ver los diferentes resultados obtenidos a través de estos métodos, hagamos una comparación directa ejecutando el siguiente código:

a1 = [1, 'x', 'y']
a2 = [1, 'x', 'y']
a3 = [1, 'x', 'y']

b = [2, 3]

a1.append(b)
a2.insert(3, b)
a3.extend(b)

print(a1)
print(a2)
print(a3)

En este programa, hemos definido tres listas con exactamente los mismos elementos. También hemos definido una segunda lista, que adjuntamos, insertamos y ampliamos a cada una de las tres listas similares definidas anteriormente. El resultado es el siguiente:

$ python all.py
[1, 'x', 'y', [2, 3]]
[1, 'x', 'y', [2, 3]]
[1, 'x', 'y', 2, 3]

Como podemos ver, ambos append y insert agregar la lista b a la lista inicial, pero como un solo elemento, que es una lista. En otras palabras, no agrega cada elemento de b individualmente, sino que agrega todo el objeto.

los extend método, por otro lado, en realidad agrega los elementos individuales de la lista b, como elementos separados y únicos de la lista resultante.

Todo esto está de acuerdo con lo que vimos anteriormente, es decir, append y insert agregue solo un elemento. Mientras, extend, amplía la lista inicial agregando los elementos de la segunda lista al final.

Otra diferencia a considerar es la medida de eficiencia. Dado cómo funciona cada operación, podemos calcular con bastante facilidad la complejidad del tiempo para cada método. O simplemente puede hacer trampa y ver el Página de complejidad del tiempo en la página wiki de python.org.

Las complejidades del tiempo son las siguientes:

Método Tiempo Complejidad

append()O (1)
insert()En)
extend()Okay)

Aquí “n” es el número de elementos actualmente en la lista, y “k” es el número de elementos en el objeto de parámetro.

Estos puntos muestran que estos tres métodos son complementarios. Debemos elegir cuál utilizar, según nuestras necesidades:

  • Si queremos agregar un elemento al final de una lista, debemos usar append. Es más rápido y directo.
  • Si queremos agregar un elemento en algún lugar dentro de una lista, debemos usar insert. Es la única opción para esto.
  • Si queremos combinar los elementos de otro iterable a nuestra lista, entonces deberíamos usar extend.

Terminando

Python presenta varias opciones para agregar elementos a una lista, todos los cuales se complementan entre sí y tienen sus propios casos de uso. En este artículo presentamos tres de esas opciones, cómo usar cada una y cuándo usar cada una. La elección del método que elija debe basarse en sus necesidades.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con tus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad