Seite 2 von 2

Verfasst: Mittwoch 25. Januar 2006, 22:41
von BlackJack
qweet hat geschrieben:

Code: Alles auswählen

def connect_trends_of_same_direction_together
hat die aufgabe eine liste mit integer zusammenzufassen. alle positiven zahlen sollen addiert werden, bis die nächste negative zahl kommt. sobald das der fall ist, sollen alle negativen zahlen addiert werden, bis die nächste positive kommt...usw.
Könnte man so machen:

Code: Alles auswählen

from itertools import groupby

values = [1, 3, 4, -2, -6, -1, -1, 8, 1, 3]

def is_positive(number):
    return number >= 0

def sum_same_sign(iterable):
    for dummy, items in groupby(iterable, is_positive):
        yield sum(items)

summed_values = list(sum_same_sign(values))
print summed_values

Verfasst: Mittwoch 25. Januar 2006, 22:44
von modelnine
Oder auch einfach:

Code: Alles auswählen

import itertools

def trends_verbinden(lst):
    return [sum(l) for _, l in itertools.groupby(lst,lambda k:k>=0)]
und: ja, ich gebe mich geschlagen, haut alle auf mich drauf. Darf ich's auf meine schlechte Kindheit schieben? ;-)

--- Heiko.