+ 4
Longest Word
Given a text as input, find and output the longest word. Sample Input this is an awesome text Sample Output awesome txt = input() print(max(txt.split(),key=len)) Can someone explain the part of "key=len" please? I am new to python and sorry for my bad English.
5 Answers
+ 7
Hello Kusa Tero
The key tells the max function exactly what the maximum should be: In your case the length of the word.
Without key it would work alphabetically. e.g. this > awesome so max would return this.
+ 3
A bit more involved explanation.
The iterables in Python can contain any type of data. Not just numbers, but also strings, booleans, even other containers, and instances of custom objects.
Functions such as sort, max and min, work under the assumption, that there is a meaningful way to compare all elements of the iterable with each other.
In case of numbers it is trivial to say which one is bigger.
In case of strings, the default ordering is alphabetical, so for example 'a' < 'ba'
But by providing a function as key argument, we can express a different ordering logic. This can be a lambda (anonymous function), or a reference to a function which takes a single argument. Each value in the iterable is transformed using this function, and the order is based on this result.
Expressing with lambda:
max(words, key=lambda w: len(w))
This can be simplified as:
max(words, key=len)
+ 1
Thanks guys
+ 1
txt = input()
#To find the longest word you can append the words inside a list , Then use len() to find the longest one.
list=txt.split(" ")
list2=[]
for i in list:
list2.append(len(i))
for x in list:
if len(x)==max(list2):
print(x)