Python - Problemas con el bucle for

 
Vista:

Problemas con el bucle for

Publicado por Maxi (4 intervenciones) el 04/06/2008 15:21:16
Buenas.
Voy a pasar a explicar detalladamente mi inconveniente:
Tengo que hacer un programa que elimine objetos de una lista. El tema es que al utilizar el bucle for si este objeto esta en la lista, lo elimina como deseo pero despues me dice que queda fuera del rango, y con razón.
Paso a transcribir mi código:

d = raw_input()
if d in lista: # aclaro que la lista <lista> ya fue declarada y cargada anteriormente
for j in range(len(lista)):
if lista[j] == d:
del lista[j]

Espero haber sido lo suficientemente explícito y en caso de no haberlo sido por favor preguntar. Agradeceré cualquier tipo de respuesta.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con el bucle for

Publicado por Cyrus (54 intervenciones) el 04/06/2008 15:41:53
Es un problema típico, te cuento que es lo que pasa, seguro que si no esta en la lista no da error, a que no?.

Bien supongamos una lista=("pato","perro","gato")

es raw input= perro
lista[0] empieza el for, j=0, como perro no es igual a pato, vuelve a pasar
lista[1] perro es igual a perro, asi que borra, y la lista queda así: ("pato","gato")
lista[2] error, porque no existe,ahora la lista tiene 2 elementos, no tres.

Como lo arreglamos, muy fácil, cuando elimine un elemento, que salga del bucle, porque ya hemos terminado de borrar, para salir del bucle se usa la sentencia break.

Pero, ¿y si hay varios perro en la lista, y quiero que borre todos?, esa te dejo que la pienses.

un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con el bucle for

Publicado por Maxi (4 intervenciones) el 04/06/2008 16:03:16
JAJA!
Ok gracias Cyrus.
Espero que sepas que valoro más el hecho que me hayas respondido lo justo y necesario a que si me hubieses servido todo en bandeja de plata.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar