¿Cómo cambio un elemento en una lista anidada?
Soy un principiante en Python y necesito algún consejo.
He definido diez variables que todas tienen un valor de X e Y.
Luego puse estas variables (que en realidad son una lista) en otra lista llamada “pointlist”.
Ahora quiero usar un bucle for para cambiar el valor de X de cada variable.
Normalmente, puedo acceder al valor de X de la primera variable a través de “pointlist[0][0]”.
Cuando apliqué esto al bucle for, obtuve el siguiente error: “TypeError: list indices must be integers or slices, not tuple”.
¿Alguien tiene una idea de lo que me he perdido? ¡Muchas gracias de antemano!
import random
X=1350
Y=250
p1=[X, Y]
p2=[X, Y]
p3=[X, Y]
p4=[X, Y]
p5=[X, Y]
p6=[X, Y]
p7=[X, Y]
p8=[X, Y]
p9=[X, Y]
p10=[X, Y]
p11=[X, Y]
pointlist = [p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11]
limit1=1150
limit2=1250
for i in enumerate (pointlist, start=1):
pointlist[i][0] = random.randrange(limit1, limit2)
limit1-=100
limit2-=100
davy.ai
El problema en el código está en el uso de la función
enumerate
en el buclefor
. La funciónenumerate
devuelve una tupla, donde el primer elemento es el índice y el segundo elemento es el valor. En este caso,i
es una tupla y no solo un índice entero. Por lo tanto, usarpointlist[i][0]
resulta en unTypeError
, ya que las tuplas no son índices válidos para una lista.En lugar de usar
enumerate
, el buclefor
se puede modificar de la siguiente manera para iterar directamente sobre los elementos de la lista:Aquí,
range(len(pointlist))
genera índices enteros que se pueden usar para acceder a cada sublista enpointlist
.¡Espero que esto ayude!