eine Liste von Strings Gegeben:
maxlen = max(len(s) for s in strings)
longest = filter(lambda s: len(s) == maxlen, strings)
print(list(longest))
Aber das Effizienz ist mehr wegen drängen Dinge bis auf das C Niveau als durch:
# word strings -> string to create a three way tie:
strings = "In python I have a list full of string and I want it to find the max by length".split()
Wir prägnante und einigermaßen effizient gehen zu einem guten Algorithmus, wie wir die Liste der Strings ging zweimal wenn wir nur gehen müssen einmal:
longest = strings[:1]
length = len(longest)
for string in strings:
string_length = len(string)
if string_length >= length:
if string_length > length:
longest = []
length = string_length
longest.append(string)
print(longest)
In einer kompilierten Sprache, dies ausführlicher Ansatz wahrscheinlich schneller sein würde, wie es die Dinge zu wiederholen vermeidet. Wenn/wenn wir etwas Eleganz und eine gewisse Geschwindigkeit wollen, die für ein Wörterbuch ruft:
counter = {}
for string in strings:
counter.setdefault(len(string), []).append(string)
longest = counter[max(counter)]
print(longest)
In allen drei Fällen erhalten wir zurück:
['python', 'string', 'length']
Was haben Sie versucht, mit dem zu tun 'während len (in_list) == a'? – user2357112
Ich weiß nicht genau. Ich bin neu hier, aber ich versuche nur den Maximalwert einer Zeichenkette zu erhalten. Wenn zwei Elemente der Zeichenfolge die gleiche Länge haben, möchte ich, dass sie beide ausdruckt. Ist das sinnvoll? Oh, das Paar ist für eine Schleife, die ich gemacht habe – Ivonne