Diferencia entre ‘+’ y ‘agregar’ en Python

Usar el operador ‘+’ para agregar un elemento en la lista en Python: El uso del operador ‘+’ hace que Python acceda a cada elemento de esa primera lista. Cuando se usa ‘+’, se crea una nueva lista con espacio para un elemento más. Luego, todos los elementos de la lista anterior deben copiarse a la nueva lista y el nuevo elemento se agrega al final de esta lista.

Ejemplo:

sample_list =[]
n = 10
  
for i in range(n):
      
    # i refers to new element
    sample_list = sample_list+[i]
  
print(sample_list)

Producción:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • El operador ‘+’ se refiere al método de acceso y no modifica la lista original.
  • En esto, sample_list no se cambia a sí mismo. Este tipo de adición de elementos en sample_list crea una nueva lista a partir de los elementos de las dos listas.
  • La asignación de sample_list a esta nueva lista actualiza el objeto PythonList para que ahora se refiera a la nueva lista.

Complejidad para agregar n elementos

¿Te has preguntado cómo funciona a medida que crece el tamaño de la Lista de Python? Veamos con la explicación.

Para cada i-ésima iteración, tendrá que haber i elementos copiados de la lista original para formar una nueva lista. Considerando constante el tiempo que se tarda en acceder a un elemento de una lista. Entonces, la complejidad o la cantidad de tiempo que lleva agregar n elementos a la Lista de Python, es decir, sample_list, tendríamos que sumar todos los accesos a la lista y multiplicar por la cantidad de tiempo que lleva acceder a un elemento de la lista más el tiempo que lleva almacenar un elemento de lista. Para contar el número total de operaciones de acceso y almacenamiento, debemos comenzar con el número de operaciones de acceso y almacenamiento para copiar la lista la primera vez que se agrega un elemento. Ese es un elemento copiado. El segundo anexo requiere dos operaciones de copia. El tercer anexo requiere tres operaciones de copia. Entonces, tenemos el siguiente número de elementos de la lista que se están copiando.
1+2+3+4+5+......+n= n(n+1)/2
Por lo tanto, complejidad temporal=O( n^2)

Usar el método .append(), es decir, un enfoque eficiente: el método .append() en las listas cambia el código para usar un método mutador para modificar la lista agregando solo un elemento más.

Ejemplo:

sample_list =[]
n = 10
  
for i in range(n):
    # i refers to new element
    sample_list.append(i) 
  
print(sample_list)

Producción:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Resulta que agregar un elemento más a una lista ya existente es muy eficiente en Python. De hecho, agregar un nuevo elemento a una lista es una operación O(1).

Entonces, la complejidad general para agregar n elementos es

1+.....(n-2) times...+1=O(n)

Nota: La prueba de que el .append()método tiene una complejidad O(1) para agregar un nuevo elemento la proporciona el método contable para encontrar la complejidad amortizada de agregar.

Comparación gráfica entre ‘+’ y ‘append’

difference-between-append-and-plus-python

Publicación traducida automáticamente

Artículo escrito por shipra1910 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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