Miniumum einer Liste ermitteln + Bedingung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Hier eine ganz primitive Variante, aber vom Laufzeitverhalten vielleicht noch schneller:

Code: Alles auswählen

def f(lists, lim):
    ind = val = None
    for i, list_ in enumerate(lists):
        for item in list_:
            if item >= lim and (val is None or item < val):
                ind, val = i, item
    return (ind, val)

print f([[1, 2], [3, 4], [5, 6, 10], [7, 8]], 9)
MfG
HWK
Daniel_SGe
User
Beiträge: 28
Registriert: Montag 8. September 2008, 19:39

Hi, ich arbeite mich zur zeit durch den letzten vorschlag von blackjack... Falls es eventuell anders benötigt wird, schau ich mir auch deinen Vorschlag an HWK:) ... Laufzeitverhalten ist aber nicht unbedingt höchste Priorität... Is nur mittlere Spielerei;)

Vorschlag von BlackJack scheint endlich zu funktionieren, oder ich hab eben den Fehler noch nciht gefunden^^


Was ich aber immer noch nciht ganz verstehe ist diese Ausnahme mit dem Valueerror. Bzw. ich weiß schon, was es bewirken soll, nur nicht wie ich es weiterverarbeite;)
der letzte teil dummy, i =min(...) gibt mir nämlich schließlich wegen eines leeren arguments eine Fehlermeldung aus.... (ich hab den ganzen vorgang in eine while-Schleife eingebunden). Ich hätte aber gerne, dass die while-Schleife im Prinzip bei einem solchen "ValueError" abbricht, bzw. dass min(...) einen bestimmten Wert annimmt, den ich weiterverarbeiten könnte;)
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Deshalb vielleicht doch die nicht so funktionale Variante. Dort ist das einfacher zu regeln und dürfte auch verständlicher sein. Schau dir's mal an.
MfG
HWK
Daniel_SGe
User
Beiträge: 28
Registriert: Montag 8. September 2008, 19:39

Hi!

Hab jetzt noch ein bischen an dem vorherigen Vorschlag von BlackJack rumprobiert... Scheint jetzt zu funktionieren...

Was mri jetzt noch fehlt ist ein kleine Funktion, mit der ich eine Datei mit verschiedenen Argumenten (manchmal auch mehrere pro Zeile) in Tupel umwandeln kann... (soll cih dafür einen neuen Thread aufmachen?) ... Bis jetzt sieht das bei mir so aus:

Code: Alles auswählen

datei = raw_input('''Falls gewünscht: Pfad der Versuchsliste...
''')
daten = open(datei, "r") 
dateien = splitfields(daten)
Es scheitert im Moment allerdings daran, dass mir splitfields mit NameError: name 'splitfields' is not defined
quittiert wird.

Was ich erreichen möchte: Jede Zeile wird in ein Tupel umgewandelt in denen jedes "Wort" einer Zeile jeweils als Element des Tupels umgewandelt wird.

Beispiel:

Code: Alles auswählen

a b c
d e
wird zu:

Code: Alles auswählen

((a, b, c), (d, e))
BlackJack

Neuer Thread für ein neues Problem wäre nicht schlecht.

Müssen es unbedingt Tupel sein?

Code: Alles auswählen

In [431]: f = open('test.txt')

In [432]: [line.split() for line in f]
Out[432]: [['a', 'b', 'c'], ['d', 'e']]

In [433]: f.close()
Hier kommen wir aber so langsam bei ziemlich grundlegenden Operationen an.
Antworten