Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Joe Fraddy en 16 Febrero 2015, 22:16 pm



Título: Error python purificar lista
Publicado por: Joe Fraddy en 16 Febrero 2015, 22:16 pm
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
  1. def purificar(lista):
  2.    cont=0
  3.    while cont < len(lista):
  4.        if lista[cont] % 2 != 0:
  5.            lista.pop(cont)
  6.        cont+=1
  7.    return lista

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

así:

Código
  1.    while cont <= len(lista):

Me da el siguiente error:

Código:
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


Título: Re: Error python purificar lista
Publicado por: Shell Root en 16 Febrero 2015, 22:36 pm
Código
  1. oList  = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
  2. iCount = 0
  3. while iCount <= len(oList)-1:
  4.    if(oList[iCount] % 2 == 0):
  5.        print oList[iCount]
  6.    iCount = iCount + 1


Título: Re: Error python purificar lista
Publicado por: Joe Fraddy en 16 Febrero 2015, 22:47 pm
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
  1. def purificar(lista):
  2.    for x in lista:
  3.        if x % 2 == 0:
  4.            print x,


Título: Re: Error python purificar lista
Publicado por: Joe Fraddy en 16 Febrero 2015, 22:58 pm
Pero de todos modos ya lo tengo el ejercicio se resuelve así:

Código
  1. def purificar(lista):
  2.    lst=[]
  3.    for x in lista:
  4.        if x % 2 == 0:
  5.            lst.append(x)    
  6.    return lst

Saludos!!!