[pyar] Una manera idiomatica de hacer esto
Mariano Aquino
mariano.aquino en gmail.com
Dom Abr 21 23:13:24 ART 2013
mi humilde aporte, usando corte de control:
def promediar_repetidos(lista):
tope = len(lista)
nueva_lista = []
i = 0
while i < tope:
dato_anterior = lista[i]
valores = []
total = 0
nuevo_dato = []
while i < tope and lista[i][0] == dato_anterior[0]:
valores.append(lista[i][1])
i += 1
for valor in valores:
total += valor
total /= len(valores)
nuevo_dato.extend(dato_anterior)
nuevo_dato.append(total)
nueva_lista.append(nuevo_dato)
return nueva_lista
espero que te sirva!
Mariano
2013/4/19 Daniel Moisset <dmoisset en machinalis.com>
> Mi intento con itertools: http://pastebin.com/HgbP25U6
>
> Hacer el promedio de un iterable requirió mas magia negra de la que me
> gustaba, pero el agrupador sale derecho. Al final use un for con un yield
> en vez de una generator expression por que me parecio que quedaba muy
> grandote como oneliner
>
> Saludos,
> D.
>
>
> 2013/4/19 Jairo Trad <frodobolsonxx en gmail.com>
>
>> Buenas, les cuento que estoy con un problema y aunque tengo claro que
>> tengo que hacer no tengo claro cual es la mejor manera de implementarlo. En
>> particular es posible que el algoritmo se encuentre con un dataset muuuygrande y no quiero que se convierta en un agujero negro de recursos.
>>
>>
>> Resulta que tengo una lista ordenada de pares [Fecha, Valor], puedo tener
>> valores diferentes, con las mismas fechas y necesito que en caso de tener
>> valores con fechas repetidas se saque un promedio de los valores y se deje
>> un solo elemento con la fecha en cuestión. les dejo un ejemplo para que lo
>> vean mas claro:
>>
>> esta lista:
>>
>> [ [datetime.datetime(2013, 4, 10, 12, 0), 23.4],
>> [datetime.datetime(2013, 4, 10, 12, 0), 25.81],
>> [datetime.datetime(2013, 4, 10, 12, 0), 25.08],
>> [datetime.datetime(2013, 4, 10, 13, 0), 18.49],
>> [datetime.datetime(2013, 4, 10, 14, 0), 20.74],
>> [datetime.datetime(2013, 4, 10, 14, 0), 25.86] ]
>>
>> deberia quedar asi:
>>
>> [ [datetime.datetime(2013, 4, 10, 12, 0), 25,03],
>> [datetime.datetime(2013, 4, 10, 13, 0), 18.49],
>> [datetime.datetime(2013, 4, 10, 14, 0), 23.3] ]
>>
>>
>> Entiendo que, a partir de saber que la lista estar ordenada, hay una
>> manera obvia de hacer esto, pero no soy Holandés... así que me vendría
>> bastante bien una mano!
>>
>> Saludos, Jairo
>>
>> --
>> Jairo Trad
>> Ing. en Computación - FCEFyN - UNC
>> ar.linkedin.com/in/ingjairotrad
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130421/76da19c0/attachment.html>
More information about the pyar
mailing list