¿Cómo podemos agregar un elemento en múltiples índices de una lista sin usar bucles?

CorePress2024-01-24  12

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

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare