Agregar vs extender en listas de Python

    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.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *