Creé una lista como esta:
n = [0,0,0,0,0]
ahora quiero agregar [100] en el índice [1,2,3].
entonces la lista quedará así:
n = [0,100,100,100,0]
otro ejemplo: agregando [200] en el índice [3,4], la lista se convertirá en-
n = [0.100.100.300.200]
Podemos hacer esto usando bucles, pero usar bucles tomará O(n) tiempo.
Quiero saber, ¿podemos agregar un valor en múltiples índices de una lista sin usar bucles?
A menos que utilice una estructura de datos especializada (y no estoy seguro de conocer una con el carácter adecuado).istics), modificar k elementos diferentes en una lista será O(k) en el mejor de los casos, sin importar el método que utilice.
- Jasmijn
27/03/2021 a las 10:03
------------------------------------
Puedes usar matrices can numpy (conocido por su código de alto rendimiento), la sintaxis es sencilla
import numpy as np
n = np.zeros(5) # make array of float, use 'np.zeros(5).astype(int)' for int
n[1:4] = 100
n[3:5] += 200
Si imprimes entre cada paso
[ 0 0 0 0 0]
[ 0 100 100 100 0]
[ 0 100 100 300 200]
------------------------------------
Dada una lista y una lista de pares de índices y valores que desea agregar a esos índices, puede lograr esto de la manera más fácil.siguiente manera
lst = [0] * 10
values = [(3, 100), (5, 200), (7, 300)]
for index, value in values:
lst[index] = value
print(lst) # [0, 0, 0, 100, 0, 200, 0, 300, 0, 0]
En general, debe iterar sobre los índices que desea utilizar, por lo que no puede ser mejor que esto: O(m), donde m es el número de índices.
1
Al responder a un problema, se recomienda utilizar los valores del OP, no otros valores
-azro
27/03/2021 a las 10:45