Autor
|
Tema: [Python] sustituir listas (Leído 13,178 veces)
|
Meta
|
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: - 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
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
En realidad a mi se me ocurre otra manera, pero dudo que sea lo que estas buscando a = [0, 1, 2, 3, -4, 5, -6, 8, -9] a = [(x>0)*x for x in a] print a #[0, 1, 2, 3, 0, 5, 0, 8, 0]
Supongo que eso es menos tedioso, pero también puede que lo entiendas menos 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
|
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. a = [0, 1, 2, 3, -4, 5, -6, 8, -9] a = [(x>0)*x for x in a] print a
Esta parte del código (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
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Es que eso tampoco funciona 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 -4Saludos
|
|
|
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
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Hasta ahora veo que habías modificado Efectivamente el code funciona aún sin el int, en realidad no se por que lo puse , ya que en los calculos los True y False no hace falta convertirlos, puedes hacer perfectamente True*5 Esta parte del código (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
|
Gracias por la información.
|
|
|
En línea
|
|
|
|
omcan
Desconectado
Mensajes: 1
|
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: print(True + True) 2 print(5 * True) 5 print(3 * False) 0 print(False - True) -1
Dentro del código: a = [0, 1, 2, 3, -4, 5, -6, 8, -9] a = [(x>0)*x for x in a] 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
|
creo que la solución que buscas al problema mas sencilla y fácil de entender sea: for x in range(len(lista)): if lista[x] <= 0: 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
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Solo 7 años tarde
|
|
|
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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
listas en Python
Ejercicios
|
xxxkroxxx
|
1
|
5,468
|
12 Noviembre 2009, 22:58 pm
por h0oke
|
|
|
Python, Listas
Scripting
|
guillehampp
|
3
|
3,945
|
21 Noviembre 2014, 22:35 pm
por guillehampp
|
|
|
Listas en python [ayuda]
Scripting
|
Joe Fraddy
|
3
|
2,620
|
15 Enero 2015, 21:26 pm
por Joe Fraddy
|
|
|
[Python] Ayuda! Quiero sustituir letras de un password por ****
Scripting
|
darkweb64
|
1
|
2,528
|
16 Febrero 2015, 20:49 pm
por darkweb64
|
|
|
Listas en python
Scripting
|
tincopasan
|
1
|
2,989
|
17 Julio 2016, 17:04 pm
por cerototal
|
|