Seite 1 von 2

Verfasst: Mittwoch 25. Januar 2006, 17:16
von qweet
hmm. auch gut zu wissen. :D

ich gebe mich geschlagen. :roll:

Verfasst: Mittwoch 25. Januar 2006, 20:14
von modelnine
list ist ein Python-Keyword, kann zu kuriosen Fehlern führen, wenn man so etwas als Variablennamen verwendet
List ist _kein_ Keyword, es ist der Name einer eingebauten Factory-Funktion. Wenn es ein Keyword wäre würde der Interpreter einen SyntaxError schmeißen bei der Benutzung wie da angegeben, er tut es aber nicht.

Keywords sind Dinge wie if, while, print, for, in, und seit neuestem auch None (probiere mal eine Zuweisung auf None zu machen in Python 2.4).

--- Heiko.

Verfasst: Mittwoch 25. Januar 2006, 20:57
von mitsuhiko
modelnine hat geschrieben:...und seit neuestem auch None (probiere mal eine Zuweisung auf None zu machen in Python 2.4).
Da muss ich dir ausnahmsweise mal wiedersprechen. None ist kein Keyword. Auch wenn es einen Syntax Error wirft, ist es nach wie vor ein Objekt vom type NoneType.

Verfasst: Mittwoch 25. Januar 2006, 21:04
von modelnine
Stimmt. :-) Ich hab mich zumindest dunkel daran erinnert dass None ein Keyword werden sollte für 2.4 (dachte ich halt zumindest), ist es aber noch nicht geworden.

--- Heiko.

Verfasst: Mittwoch 25. Januar 2006, 22:31
von BlackJack
modelnine hat geschrieben:List ist _kein_ Keyword, es ist der Name einer eingebauten Factory-Funktion.
Ich will auch mal "Erbsenzählen": `list` ist keine Factory-Funktion, das war früher mal. Jetzt ist `list` ein `type`. Sonst könnte man nicht davon erben. :-)

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.