Saltar al contenido

¿Cómo reemplazar valores en índices específicos de una lista de Python?

Investigamos en distintos sitios y así de esta manera traerte la solución para tu problema, en caso de alguna duda deja la pregunta y te contestamos sin falta.

Solución:

El mayor problema con su código es que no se puede leer. Regla número uno del código de Python, si no es legible, nadie lo verá durante el tiempo suficiente para obtener información útil. Utilice siempre nombres de variables descriptivos. Casi no detecté el error en su código, veámoslo nuevamente con buenos nombres, estilo de reproducción en cámara lenta:

to_modify = [5,4,3,2,1,0]
indexes = [0,1,3,5]
replacements = [0,0,0,0]

for index in indexes:
    to_modify[indexes[index]] = replacements[index]
    # to_modify[indexes[index]]
    # indexes[index]
    # Yo dawg, I heard you liked indexes, so I put an index inside your indexes
    # so you can go out of bounds while you go out of bounds.

Como es obvio cuando usa nombres de variables descriptivos, está indexando la lista de índices con valores de sí mismo, lo que no tiene sentido en este caso.

Además, al iterar a través de 2 listas en paralelo, me gusta usar el zip función (o izip si le preocupa el consumo de memoria, pero yo no soy uno de esos puristas de iteraciones). Así que intente esto en su lugar.

for (index, replacement) in zip(indexes, replacements):
    to_modify[index] = replacement

Si su problema solo es trabajar con listas de números, entonces diría que @steabert tiene la respuesta que estaba buscando con esas cosas numpy. Sin embargo, no puede usar secuencias u otros tipos de datos de tamaño variable como elementos de matrices numpy, por lo que si su variable to_modify tiene algo así, probablemente sea mejor hacerlo con un bucle for.

numpy tiene matrices que le permiten usar otras listas / matrices como índices:

import numpy
S=numpy.array(s)
S[a]=m

Por qué no solo:

map(s.__setitem__, a, m)

Sección de Reseñas y Valoraciones

Acuérdate de que puedes glosar si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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