2009-07-28 13 views
1

Как я могу использовать python для поиска самого длинного слова из набора слов? я могу найти первое слово, как это:Как найти самое длинное слово с 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

Это, вероятно, наиболее трудно понять вопрос, который я когда-либо читал. Вы ищете самое длинное слово в заданной строке, поэтому в вашем примере это будет «aaa», правильно ?! И вы хотите получить его из одного выражения с помощью встроенных модулей и без создания собственной функции или класса. Это суть вашего вопроса? – ThomasH

+2

@LarsOn: Пожалуйста, не комментируйте свой вопрос. Пожалуйста, удалите комментарий и ОБНОВЛЯЙТЕ вопрос с новой информацией. –

ответ

34

Если я правильно понимаю ваш вопрос:

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

split() разбивает строку на слова (разделенные пробелами); max() находит самый большой элемент, используя встроенную функцию len(), т. Е. Длину строки, в качестве ключа, чтобы узнать, что означает «наибольший».

+3

+1 действительно элегантный код (по крайней мере, для Java-разработчика) – dfa

+2

+1 отличное решение – ThomasH

2

Вот один из категории «Как трудно вы можете сделать это», также нарушив требование о том, что не должно быть никакого собственного класса Подключайтесь:

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] 

Интересный бит, что вы используете элемент объекта для поддерживать состояние, пока список вычисляется в понимании, в конечном счете отбрасывая список и используя только побочный эффект.

Но, пожалуйста, используйте один из решений max() выше :-).

+0

А еще лучше: o.i = ''; ([setattr (o, 'i', x) для x в s.split(), если len (x)> len (o.i)], o.i) [1] – ThomasH

0

Другой способ найти самое длинное слово в строке:

a="a aa aaa aa" 
b=a.split() 
c=sorting(b,key=len) 
print(c[-1])  
Смежные вопросы