[Python-es] gráfico en barras en tiempo real
Reynaldo Baquerizo Micheline
rbaquerizo en ehas.org
Mie Sep 26 20:50:21 CEST 2007
Maria Eugenia Ferrero escribió:
> Qué es exactamente lo que hace: dato.split()[0].strip('k') for dato in
> temp.split(':')[1].split(',')] ???
> Perdón mi ignorancia pero probando eso tampoco me sale entonces quiero saber
> mas o menos que es lo que estoy intetando hacer para ir probando
> modificándole algo.....
> Me da impotencia saber que es algo tan sencillo y que no me sale...!!!!!!
>
[dato.split()[0].strip('k') for dato in temp.split(':')[1].split(',')]
es una 'comprehension list'
podrías conseguir dicho resultado de manera equivalente con un map
def quitarK(dato):
dato.split()[0].strip('k')
map(quitark, temp.split(':')[1].split(','))
Ahora, si temp = 'Mem: 385564k total, 378956k used, 6608k
free, 6236k buffers'
temp.split(':') esta separando la cadena tomando como referencia ':' ,
si no pusieras nada se separan por espacios en blanco.
temp.split(':') regresa una lista .... ['Mem', ' 385564k total,
379188k used, 6376k free, 5560k buffers']
temp.split(':')[1] devuelve en el 2 elemento de la lista, que es una
cadena. Si vuelves a hacer split sobre esa cadena con referencia ','
(coma) separará la cadena y te devolvera una lista. --> [' 385564k
total', ' 379188k used', ' 6376k free', ' 5560k buffers']
cuando utilizas map o list comprehensions lo que haces es, pasar cada
elemento de la secuencia como argumento de la función, la cual se evalua
y se almacena en una lista ...así para los demás elementos de la
secuencia. Al final te devuelve una lista.
fijate en esto, podrías hacer un for loop
lista = []
for dato in dato in temp.split(':')[1].split(','):
d = dato.split()[0].strip('k')
lista.append(d)
map te ahora algunas lineas, una list comprehension te ahorra aún mas
lineas.
Espero que me hayas entendido
Saludos,
Reynaldo
Más información sobre la lista de distribución Python-es