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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python] sustituir listas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] sustituir listas  (Leído 12,706 veces)
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
[Python] sustituir listas
« en: 12 Noviembre 2010, 13:03 pm »

En el ejercicio 226) del libro en pdf página 175 que se puede ver en mi firma abajo...

Por lo que dice debo hacer:
Citar
- Crea aualquier lista con algunos números  negativo.
- Sustituir cualquier elemento negativo por 0.

Primer paso:
ta = [0, 1, 2, 3, -4, 5, -6, 8, -9]

Iba a usar for i in lista, pero la idea es sustituirla. Lo iba hacer uno a uno manualmente a modificar los negativos por los 0 y no creo que sea lo recomendado.

Ejemplo:
ta = [0, 1, 2, 3, -4, 5, -6, 8, -9]
ta = [-4] = 0
>>> a
resultado:
lista = [0, 1, 2, 3, 0, 5, -6, 8, -9]
Y así con los demás números negativos. Esto de hacerlo manual no creo que sea lo  correcto, debe haber alguna manera de como hacerlo de una pasada. Por ejemplo:

Si detecta en una lista un número negativo, modificar esa lista sustituyento los números negativos por 0.

Eso es lo que no se si se puede hacer. Por ahora manualmente uno a uno si me sale, aunque así es tedioso.


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python] sustituir listas
« Respuesta #1 en: 12 Noviembre 2010, 13:11 pm »

No se como es que funciona eso que pones, lo de ta = [-4] = 0 debería de partirse con un "SyntaxError: can't assign to literal"

Y si es con un for in

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python] sustituir listas
« Respuesta #2 en: 12 Noviembre 2010, 13:42 pm »

En realidad a mi se me ocurre otra manera, pero dudo que sea lo que estas buscando

Código
  1. a = [0, 1, 2, 3, -4, 5, -6, 8, -9]
  2. a = [(x>0)*x for x in a]
  3. print a
  4. #[0, 1, 2, 3, 0, 5, 0, 8, 0]
Supongo que eso es menos tedioso, pero también puede que lo entiendas menos :xD

Saludos
« Última modificación: 25 Noviembre 2010, 11:54 am por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: [Python] sustituir listas
« Respuesta #3 en: 12 Noviembre 2010, 15:45 pm »

No se como es que funciona eso que pones, lo de ta = [-4] = 0 debería de partirse con un "SyntaxError: can't assign to literal"

Y si es con un for in

Saludos


Lo de ta[-4] = 0, querio decirlo así. ejjeje y funciona pero es manual.

Tu código funciona y no hace falta un int.
Código
  1. a = [0, 1, 2, 3, -4, 5, -6, 8, -9]
  2. a = [(x>0)*x for x in a]
  3. print a

Esta parte del código
Código
  1. (x>0)*x
Por lo que estoy viendo x del índice del "for in" comprueba si es mayor que cero, después multiplica por x cuyo resultado da cero.

¿Me equivoco?

Tu código funciona, ahora quiero aprender cómo funciona para aprender si no te importa.  ;)


« Última modificación: 12 Noviembre 2010, 16:00 pm por Meta » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python] sustituir listas
« Respuesta #4 en: 12 Noviembre 2010, 15:49 pm »

Es que eso tampoco funciona :xD
Mira, a ti te esta funcionando porque justamente el elemento que quieres modificar coincide con el que esta en el índice 4, cambia en el ta ese -4 por un -14 y verás que no te funciona. Lo que pasa es que como las listas no aceptan indices negativos simplemente lo ignora y revisa el índice 4, no es que este modificando el valor -4

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python] sustituir listas
« Respuesta #5 en: 25 Noviembre 2010, 11:53 am »

Hasta ahora veo que habías modificado :silbar:
Efectivamente el code funciona aún sin el int, en realidad no se por que lo puse :xD, ya que en los calculos los True y False no hace falta convertirlos, puedes hacer perfectamente True*5 :P

Esta parte del código
 
Código
  1. (x>0)*x
Por lo que estoy viendo x del índice del "for in" comprueba si es mayor que cero, después multiplica por x cuyo resultado da cero.

Lo que hago es revisar si es mayor a cero, si es mayor a cero da True, y True por un numero es igual al mismo numero (True*5=5), si es menor a cero da False, y como False es cero, cero por cualquier cosa es cero. De este modo los números negativos quedan como ceros en la sustitución.

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: [Python] sustituir listas
« Respuesta #6 en: 25 Noviembre 2010, 12:11 pm »

Gracias por la información.
En línea

omcan

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: [Python] sustituir listas
« Respuesta #7 en: 5 Mayo 2017, 09:08 am »

En realidad el programa almacena los valores booleanos en un bit como un 1 o 0; esta característica yo creo es conocida por todos, pero Novlucker muestra que también se permite usar los booleanos True o False para operar matemáticamente como si fueran unos y ceros:

Código
  1. print(True + True)
  2. 2
  3.  
  4. print(5 * True)
  5. 5
  6.  
  7. print(3 * False)
  8. 0
  9.  
  10. print(False - True)
  11. -1
  12.  

Dentro del código:

Código
  1. a = [0, 1, 2, 3, -4, 5, -6, 8, -9]
  2. a = [(x>0)*x for x in a]
  3. print a

la sentencia (x>0) tiene la función de devolver un booleano True o False que es interpretado como un 1 o un 0 y usado para multiplicar a "x"; y es el resultado de esa operación, para cada valor de x, la que va dando la serie de resultados: [0, 1, 2, 3, 0, 5, 0, 8, 0].

« Última modificación: 5 Mayo 2017, 09:19 am por omcan » En línea

PUAROT

Desconectado Desconectado

Mensajes: 86



Ver Perfil WWW
Re: [Python] sustituir listas
« Respuesta #8 en: 5 Mayo 2017, 11:24 am »

creo que la solución que buscas al problema mas sencilla y fácil de entender sea:
Código
  1. for x in range(len(lista)):
  2. if lista[x] <= 0:
  3. lista[x] = 0

 Analiza bien que hace cada linea
« Última modificación: 5 Mayo 2017, 11:44 am por PUAROT » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python] sustituir listas
« Respuesta #9 en: 17 Septiembre 2017, 08:58 am »

Solo 7 años tarde :rolleyes: :silbar:
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
listas en Python
Ejercicios
xxxkroxxx 1 4,809 Último mensaje 12 Noviembre 2009, 22:58 pm
por h0oke
Python, Listas
Scripting
guillehampp 3 3,202 Último mensaje 21 Noviembre 2014, 22:35 pm
por guillehampp
Listas en python [ayuda]
Scripting
Joe Fraddy 3 2,309 Último mensaje 15 Enero 2015, 21:26 pm
por Joe Fraddy
[Python] Ayuda! Quiero sustituir letras de un password por ****
Scripting
darkweb64 1 2,317 Último mensaje 16 Febrero 2015, 20:49 pm
por darkweb64
Listas en python
Scripting
tincopasan 1 2,774 Último mensaje 17 Julio 2016, 17:04 pm
por cerototal
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines