elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Duda programa python.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda programa python.  (Leído 1,967 veces)
assw1208

Desconectado Desconectado

Mensajes: 79



Ver Perfil
Duda programa python.
« en: 24 Agosto 2020, 18:36 pm »

Tengo un problema desde ayer, al crear un programa que elimina los elementos pares de una lista. No elimina todos los números pares de la lista y por más que reviso el código no doy con una solución el código es:

Código:
lista = [13,26, 24, 15, 28, 91, 63]
print(lista)
indice = 0

for i in lista:
    #print(indice)
    if i %2 == 0:
        print("if : ", indice, "numero :", i)
        lista.pop(indice)
    indice += 1


print( "\n \n",lista)
La lista que me devuelve después es [13,24,28,91,63]... y ni idea de porque pasa esto.


Sé que haciendo un apaño como este ya estaría:
Código:
lista = [13,26, 24, 15, 28, 91, 63]
lista_impares = []


for i in lista:
    if i %2 != 0:
        lista_impares.append(i)


Pero me gustaría saber en que estoy fallando.
Estaría muy agradecido a cualquiera que me supiese decir donde estoy fallando.
Muchas gracias de antemano.


« Última modificación: 24 Agosto 2020, 19:13 pm por assw1208 » En línea

"COURAGE TODAY,
                              VICTORY TOMORROW "

                            ----------------W--------------
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Duda programa python.
« Respuesta #1 en: 24 Agosto 2020, 19:24 pm »

Muy facil amigo, cuando, haces pop para retirar un elemento de un array este se transforma y se reordenan los índices, pero mientras lo haces estás iterando, por eso estás omitiendo todos los valores que siguen despues de un valor eliminado ya que se corre el índice. A demás, un array de python cuenta con la función remove(), no hace falta hacerle un pop(), asi no necesitas índices, pero de todas maneras puedes hacerlo más fácil:

Código:
lista = [13, 26, 24, 15, 28, 91, 63]
lista = [i for i in lista if i % 2 != 0]
print(lista)

Código:
$ python3 test.py
[13, 15, 91, 63]

Saludos.


« Última modificación: 24 Agosto 2020, 19:31 pm por WHK » En línea

assw1208

Desconectado Desconectado

Mensajes: 79



Ver Perfil
Re: Duda programa python.
« Respuesta #2 en: 24 Agosto 2020, 22:35 pm »

Muchisimas gracias tanto por la explicación como por el código, nunca se me habría ocurrido hacer algo así dentro de una lista  :o :o. Sin duda me hace falta muchísimo mas estudio de este tema   :laugh:.
En línea

"COURAGE TODAY,
                              VICTORY TOMORROW "

                            ----------------W--------------
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROGRAMA EN PYTHON
Scripting
D@V1D94 2 5,260 Último mensaje 31 Enero 2012, 20:30 pm
por D@V1D94
[Python/Tk]Mi Programa se ríe de mi
Scripting
AdeLax 2 2,641 Último mensaje 11 Agosto 2013, 12:19 pm
por AdeLax
programa en python
Scripting
py.cba 5 2,785 Último mensaje 5 Noviembre 2016, 03:52 am
por Once
Programa python
Scripting
santiago torres 2 1,747 Último mensaje 10 Marzo 2017, 13:20 pm
por Orubatosu
Programa en Python 3D
Programación General
PepeElMago33 4 2,863 Último mensaje 18 Abril 2019, 16:20 pm
por PepeElMago33
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines