Vergleich von Längen mehrerer Listen

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
Ede1994
User
Beiträge: 72
Registriert: Dienstag 2. Mai 2017, 12:41

Hallo liebe Community,
ich benötige mal wieder eure Hilfe...
Ich möchte 5 Listen bezüglich ihrer Längen vergleichen und die längste Liste soll am Ende ausgegeben werden. Das man die Länge einer Liste mit len() herausfindet weiß ich.

Code: Alles auswählen

a = [1,1,1,1]
b = [1]
c = [1,1,1]
d = [1,1,1,1,1]
e = [1,1,1,1,1]

L = [a,b,c,d,e]
Das Ergebnis wäre hier also 'e' . Ich hab es zuerst mit einer Funktion/Def. probiert, mit if... else..., aber damit bin ich nicht wirklich zum Ziel gekommen. Gibt es vielleicht schon eine Funktion die aus L die längste Liste zurückgibt?

Mein Versuch:

Code: Alles auswählen

def compare(lists):
    previous = lists[0]
    for value in lists:
        if len(value) >= len(previous):
            previous=value
Aber wie macht man dann weiter?
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Schau dir mal max() an.

Code: Alles auswählen

a = [1,1,1,1]
b = [1]
c = [1,1,1]
d = [1,1,1,1,1]
e = [1,1,1,1,1]

L = [a,b,c,d,e]
print(max(L))
if max(L) == a:
    print("a")
if max(L) == b:
    print("b")
if max(L) == c:
    print("c")
if max(L) == d:
    print("d")
if max(L) == e:
    print("e")
Benutzeravatar
Ede1994
User
Beiträge: 72
Registriert: Dienstag 2. Mai 2017, 12:41

Danke!
Aber das funktioniert doch nur solange ich nur '1'-en in meinen Listen habe, oder? Sobald sich die Zahlen der Liste ändern gibt max(L) doch dann die Liste mit der höchsten Zahl aus, zumindest war das vorhin so, als ich es auch mit max() probiert habe.
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

Sowohl `d` als auch `e` sind gleich lang...

Was Du suchst, ist `max` mit `key`:

Code: Alles auswählen

m = max(L, key=len)
Benutzeravatar
Ede1994
User
Beiträge: 72
Registriert: Dienstag 2. Mai 2017, 12:41

Danke!
Deutlich kürzer als meine Idee.
Ich google zwar immer nach solchen Funktionen, finde aber nie die Richtigen...
Antworten