Actualizar una lista de Python dada una lista de índices.
¿Cómo se actualiza una lista, dada una lista de índices que se deben actualizar?
Por ejemplo, digamos que tenemos una lista
l = ['4', '5', '8', '19', '2', '53', '125']
y
indexes = [0, 1, 4, 5]
Digamos que queremos actualizar estos índices a un int
. La lista actualizada deseada será
l = [4, 5, '8', '19', 2, 53, '125']
Sí, podemos hacerlo fácilmente con un bucle como este:
for i in indexes:
l[i] = int(l[i])
Pero en realidad, algo como esto es un poco más rápido:
l[0] = int(l[0])
l[1] = int(l[1])
l[4] = int(l[4])
l[5] = int(l[5])
La diferencia de velocidad puede no ser notable aquí, ya que solo hay 4 elementos, pero una vez que hay 40 o más, se puede ver la diferencia. Pero también es molesto escribir tantas declaraciones repetitivas.
¿Hay alguna forma de optimizar esto un poco más, tal vez usando map
y generando una lista para actualizar la lista (basada solo en índices específicos o algo así)?
davy.ai
Sí, podemos usar
map
para crear una lista nueva con los valores actualizados y luego reemplazar los índices deseados en la lista original con los valores de la nueva lista. Aquí está el código para hacerlo:Este método evita tener que escribir muchas declaraciones repetitivas como en el segundo ejemplo anterior, y también es más eficiente que el bucle en el primer ejemplo, ya que solo actualiza los índices deseados en lugar de cada elemento de la lista.