Seite 1 von 1

Vergleich von Längen mehrerer Listen

Verfasst: Montag 2. September 2019, 12:49
von Ede1994
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?

Re: Vergleich von Längen mehrerer Listen

Verfasst: Montag 2. September 2019, 12:58
von Jankie
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")

Re: Vergleich von Längen mehrerer Listen

Verfasst: Montag 2. September 2019, 13:08
von Ede1994
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.

Re: Vergleich von Längen mehrerer Listen

Verfasst: Montag 2. September 2019, 13:33
von Sirius3
Sowohl `d` als auch `e` sind gleich lang...

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

Code: Alles auswählen

m = max(L, key=len)

Re: Vergleich von Längen mehrerer Listen

Verfasst: Montag 2. September 2019, 13:51
von Ede1994
Danke!
Deutlich kürzer als meine Idee.
Ich google zwar immer nach solchen Funktionen, finde aber nie die Richtigen...