2009-07-28 21 views
1

Wie kann ich Python verwenden, um das längste Wort aus einer Reihe von Wörtern zu finden? kann ich das erste Wort wie diese finden:Wie finde ich das längste Wort mit Python?

'a aa aaa aa'[:'a aa aaa aa'.find(' ',1,10)] 

'a' 

rfind is another subset 

'a aa aaa aa'[:'a aa aaa aa'.rfind(' ',1,10)] 

'a aa aaa' 
+2

Dies ist wahrscheinlich die schwierigste Frage zu verstehen, die ich je gelesen habe. Sie suchen nach dem längsten Wort in einer gegebenen Zeichenfolge, in Ihrem Beispiel wäre das also "aaa", richtig ?! Und Sie möchten es aus einem einzelnen Ausdruck mithilfe von integrierten Funktionen und ohne Erstellen einer eigenen Funktion oder Klasse abrufen. Ist das die Essenz deiner Frage? – ThomasH

+2

@LarsOn: Bitte kommentieren Sie nicht Ihre eigene Frage. Bitte löschen Sie den Kommentar und aktualisieren Sie die Frage mit den neuen Informationen. –

Antwort

34

Wenn ich das richtig verstehe Ihre Frage:

>>> s = "a aa aaa aa" 
>>> max(s.split(), key=len) 
'aaa' 

split() die Zeichenfolge in Worte spaltet (durch Leerzeichen getrennt); max() findet das größte Element, das die eingebaute len()-Funktion verwendet, d. H. Die Zeichenfolgenlänge, als den Schlüssel, um herauszufinden, was "größter" bedeutet.

+3

+1 wirklich eleganter Code (zumindest für einen Java-Entwickler) – dfa

+2

+1 ausgezeichnete Lösung – ThomasH

2

Hier ist einer aus der Kategorie „Wie schwer kann man es machen“, auch die Anforderung zu verletzen, dass es keine eigene Klasse beteiligt: ​​

class C(object): pass 
o = C() 
o.i = 0 
ss = 'a aa aaa aa'.split() 
([setattr(o,'i',x) for x in range(len(ss)) if len(ss[x]) > len(ss[o.i])], ss[o.i])[1] 

Das interessantes Bit ist, dass Sie ein Objekt Mitglied verwenden, um Zustand beibehalten, während die Liste im Verständnis berechnet wird, wobei schließlich die Liste verworfen wird und nur der Nebeneffekt verwendet wird.

Aber bitte verwenden Sie eine der max() Lösungen oben :-).

+0

Ah, noch besser: o.i = ''; ([setattr (o, 'i', x) für x in s.split() wenn len (x)> len (o.i)], o.i) [1] – ThomasH

0

Ein anderer Weg längstes Wort in einem String zu finden:

a="a aa aaa aa" 
b=a.split() 
c=sorting(b,key=len) 
print(c[-1])  
Verwandte Themen