[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