爲什麼Python 3.4中的max()
函數在值列表中給我的值小於預期值?Max()函數不返回Python中的最大值3.4
實施例1,其中期望值爲'marco'
:
>>> max('zara', 'marco')
'zara'
實施例2,其中期望值爲'cherries'
:
>>> max('apples', 'oranges', 'cherries', 'banana')
'oranges'
爲什麼Python 3.4中的max()
函數在值列表中給我的值小於預期值?Max()函數不返回Python中的最大值3.4
實施例1,其中期望值爲'marco'
:
>>> max('zara', 'marco')
'zara'
實施例2,其中期望值爲'cherries'
:
>>> max('apples', 'oranges', 'cherries', 'banana')
'oranges'
字符串進行排序lexicographically,不受尺寸。
zara
是 '最大的',因爲它是最後的排序順序,marco
後:
>>> 'zara' > 'marco'
True
>>> sorted(['zara', 'marco'])
['marco', 'zara']
oranges
來後,banana
和cherries
。
>>> sorted(['apples', 'oranges', 'cherries', 'banana'])
['apples', 'banana', 'cherries', 'oranges']
如果你想在最長字符串,你需要告訴max()
使用,作爲重點:
max(sequence, key=len)
演示:
>>> max('zara', 'marco')
'zara'
>>> max('zara', 'marco', key=len)
'marco'
>>> max('apples', 'oranges', 'cherries', 'banana')
'oranges'
>>> max('apples', 'oranges', 'cherries', 'banana', key=len)
'cherries'
lexicographically您的意思是? – Tommy
@Tommy:跟上來,這個錯字很久以前就被糾正了! :-P –
max
可與數字,字符串和其他類型,但是對於字符串,它不能簡單地工作看字符串的大小 - 它使用詞法排序這是你會看到英語詞典中單詞的順序。
因此,在您的案例中,zara
和oranges
最後出現在字典中,因此爲max()
值。
max()中的字符串將按照ASCII順序進行比較,當您比較'zare'和'marco'時,ACSII中z的值爲122,m的值爲109,因此zara大於marco。如果第一個字母的值相等,則會比較連字母,直到字符串相等(相同的字符串)或比其他字符串大的字符串之一。
max使用排序功能,並會按字母順序給出最後一個單詞。如果你想要最長的單詞,你需要做[len(「zacra」),len(「macros」)....]
或者你可以做key = len – ytpillai
爲什麼marca比zara更大? –
按字典順序o> c不是嗎? –