Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Meta en 14 Noviembre 2010, 06:13 am



Título: [Python] - Eliminar listas y par
Publicado por: Meta en 14 Noviembre 2010, 06:13 am
Buenas:

Ver ejercicio. (http://www.subeimagenes.com/img/wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww-6847.jpg)

¿Cómo hago para borrar números pares de una lista así sin más?

lista = [1, 2, 1, 5, 0, 3]

Intenté hacer una locura.

Código
  1. lista = [1, 2, 1, 5, 0, 3]
  2.  
  3. i = 0
  4. while i < len(lista):
  5.    if lista[i] < 2:
  6.        del lista[i]
  7.    else:
  8.        i += 2
  9.  
  10. print lista


Título: Re: [Python] - Eliminar listas y par
Publicado por: xassiz~ en 14 Noviembre 2010, 12:48 pm
Con:
Código
  1. if lista[i] < 2:
  2.  
compruebas si el número es par? ;D


Título: Re: [Python] - Eliminar listas y par
Publicado por: Meta en 14 Noviembre 2010, 13:55 pm
Es un ejemplo que vienen en el PDF.

¿Cómo se hace lo del par?


Título: Re: [Python] - Eliminar listas y par
Publicado por: xassiz~ en 14 Noviembre 2010, 15:23 pm
Código
  1. lista = [1, 2, 1, 5, 0, 3]
  2.  
  3. for i in lista:
  4.    if lista[i]%2 == 0:
  5.        del lista[i]
  6.  
  7. print lista
  8.  
No tengo Python en este pc, pero debería funciona :P


Título: Re: [Python] - Eliminar listas y par
Publicado por: Meta en 14 Noviembre 2010, 16:08 pm
Da error:
Citar
    if lista%2 == 0:
IndexError: list index out of range


Título: Re: [Python] - Eliminar listas y par
Publicado por: xassiz~ en 14 Noviembre 2010, 18:42 pm
lista[i], no lista


Título: Re: [Python] - Eliminar listas y par
Publicado por: .:WindHack:. en 14 Noviembre 2010, 19:55 pm
El código está mal. Es así:

Código
  1. List = [1,2,3,4,5,6,7,8,9,10]
  2.  
  3. for i in List:
  4.    if i % 2 == 0:
  5.        List.remove(i)
  6.  
  7. print List


Título: Re: [Python] - Eliminar listas y par
Publicado por: Meta en 14 Noviembre 2010, 20:30 pm
No, no es así: Lo he estado probando a mi manera y no.

Código
  1. lista = [1, 2, 1, 5, 0, 3]
  2.  
  3. for i in lista:
  4.    if i % 2 == 0:
  5.        lista.remove(i)
  6.  
  7. print lista

Citar
[1, 1, 5, 3]

El resultado debe ser así.
Citar
[2, 5, 3]

Mirando lo que significa remove. ME imagino que quitar, eliminar. Aquí hay tantas cosa que no se done pinchar.
http://docs.python.org/search.html?q=remove

Gracias por tu tiempo.


Título: Re: [Python] - Eliminar listas y par
Publicado por: xassiz~ en 14 Noviembre 2010, 21:46 pm
Perdón:
Código
  1. lista = [1, 2, 1, 5, 0, 3]
  2.  
  3. for i in lista:
  4.    if i%2 == 0:
  5.        del lista[i]
  6.  
  7. print lista
  8.  


Título: Re: [Python] - Eliminar listas y par
Publicado por: .:WindHack:. en 14 Noviembre 2010, 21:57 pm
No, no es así: Lo he estado probando a mi manera y no.

El resultado debe ser así.
Citar
[2, 5, 3]

Mirando lo que significa remove. ME imagino que quitar, eliminar. Aquí hay tantas cosa que no se done pinchar.
http://docs.python.org/search.html?q=remove

Gracias por tu tiempo.

Perdón, fue error mío al no leer el enunciado del ejercicio. Entendí que se debía eliminar los números pares de la lista, cuando lo que pedían era remover los elementos que tuviesen un índice par.

Bueno, creo que de esta manera funciona bien:

Código
  1. List = [1, 2, 1, 5, 0, 3]
  2.  
  3. i = 0
  4. while (i < len(List)):
  5. del List[i]
  6. i += 1
  7.  
  8. print List

Código
  1. C:\Users\WindHack\Desktop\>PoC.py
  2. [2, 5, 3]


Título: Re: [Python] - Eliminar listas y par
Publicado por: Meta en 14 Noviembre 2010, 22:23 pm
Ahora si, muchas gracias.


Título: Re: [Python] - Eliminar listas y par
Publicado por: .:WindHack:. en 14 Noviembre 2010, 23:00 pm
De nada.  :D


Título: Re: [Python] - Eliminar listas y par
Publicado por: Novlucker en 25 Noviembre 2010, 11:45 am
Seguro no es el objetivo del ejercicio pero ...  :xD

Código
  1. List = [1, 2, 1, 5, 0, 3]
  2. print [x for x in List[1::2]]

Saludos