2017-10-21 52 views
1

使用Python3.6.2,我試圖找到句子中最長的單詞。 我想出的代碼,從python中的max函數獲得連線結果

>>> sen = "Argument goes here" 

>>> max(sen.split()) 

'here' 

我想,爲什麼是答案「這裏」,而不是「參數」,而不是解決問題的辦法。

預先感謝您的時間 - 如果我錯過了任何東西,過分強調或不夠重視某個特定點,請在評論中告訴我。

+4

max是比較你的字符串的詞法順序而不是字符串的長度 –

+0

請你向我解釋什麼是詞法順序或給出任何鏈接來了解它@SungJin Steve Yoo –

+1

請看這裏。 http://thepythonguru.com/python-strings/ –

回答

3

由於SUNGJIN史蒂夫柳指出,max功能默認情況下,比較了Lexological Orderstring,在這裏,字符串長度不發揮作用。

所以,當你做

max(['Argument', 'goes', 'here']) 

這裏,開始信h具有高階相比,無論Ag

如果你想通過lengthlexological order做到這一點,使用key功能:

max(sen.split(), key= lambda x:(len(x), x)) 

下面是一些情況下,你得到了它的竅門:

>>> sen = sen = 'hex men or -' 

>>> max(sen.split()) 
=> 'or' 
>>> max(sen.split(), key=len) 
=> 'hex' 
>>> max(sen.split(), key= lambda x: (len(x), x)) 
=> 'men' 
+1

太好了。很好的回答 –

+0

@SungJinSteveYoo:謝謝:) –

2

當你沒有提及maxkey功能時,它只會採用默認的迭代次序;在這種情況下,詞彙順序。您需要提到您需要訂購len。你需要這樣做:

>>> sen = "Argument goes here" 
>>> max(sen.split(), key=len) 
'Argument'