max
函數有一個參數叫做key
,與sorted
的key
類似
這種比較方法是以 自己 本身產生出的衍生值來比較,例如
In [30]: max('1','20','3','31','300', key=int)
Out[30]: '300'
就會先把字串轉成int
來比較,最大就是'300'
。
要注意輸出的答案並不會變成int,而是原本的str格式
如果沒有key=int
,最大的會是'31'
比較方式:先字字比較,沒有字<有字
In [31]: sorted(('1','20','3','31','300'))
Out[31]: ['1', '20', '3', '300', '31']
如果要同時有兩種比較,可以寫lambda
,例如
In [32]: max('003', '3', key=lambda x: (len(x), int(x)))
Out[32]: '003'
In [33]: max('003', '3')
Out[33]: '3'
應用到這題,可以參考其他解題報告與討論,或是自己想想,字串的數字要怎麼比較呢?
如果直接轉成int當然很簡單,但速度會很慢,這時候才需要直接以字串比較
以我的提交來說
max(key=int) # 需要 0.8s = 800ms
key=lambda x:(...)# 可以縮減至 26 ~ 28ms
但其實我還有另外用functools.partial
,不知道會不會影響哈
想知道怎麼用可以上網查查,或在下面問囉,表示你很認真地看完了www
選擇 Repo