Error python purificar lista

Iniciado por Joe Fraddy, 16 Febrero 2015, 22:16 PM

0 Miembros y 1 Visitante están viendo este tema.

Joe Fraddy

Bueno este es un ejercicio donde tengo que purificar una lista, tengo que sacar todos los impares pero no se porque me da un error:

Código (python) [Seleccionar]
def purificar(lista):
    cont=0
    while cont < len(lista):
        if lista[cont] % 2 != 0:
            lista.pop(cont)
        cont+=1
    return lista


Así no me alcanza a checar el último valor de la lista, pero si le agrego el =

así:

Código (python) [Seleccionar]
    while cont <= len(lista):

Me da el siguiente error:

Traceback (most recent call last):
  File "purificar.py", line 4, in purificar
    if lista[cont] % 2 != 0:
IndexError: list index out of range


Pero no se porque esta mal mi sentencia

Shell Root

Código (python) [Seleccionar]
oList  = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
iCount = 0
while iCount <= len(oList)-1:
    if(oList[iCount] % 2 == 0):
        print oList[iCount]
    iCount = iCount + 1
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Joe Fraddy

#2
No me sucede lo mismo, y según veo ese programa solamente imprime en pantalla los números pares, pero lo que estoy tratando de hacer es modificar la lista borrando los impares.

Para eso yo creo que haría algo así:

Código (python) [Seleccionar]
def purificar(lista):
    for x in lista:
        if x % 2 == 0:
            print x,

Joe Fraddy

Pero de todos modos ya lo tengo el ejercicio se resuelve así:

Código (python) [Seleccionar]
def purificar(lista):
    lst=[]
    for x in lista:
        if x % 2 == 0:
            lst.append(x)   
    return lst


Saludos!!!