看板 Python 關於我們 聯絡資訊
大家好,小弟正在python刷題中 題目是這樣的:給定一list找出眾數值, 若出現次數一樣多的元素不只一個, 則選出數值較小的元素。 這是我不import任何套件寫的: https://imgur.com/a/3ZVIwF3 不過交出答案後不通過 原因在於 max(set(arr), key=arr.count()) 不會找出最小的元素 (在相同出現次數條件下) 但是我自己去嘗試別的list,卻可以得到最小的元素 https://imgur.com/a/7it3xL4 還請有高手能替小弟解惑,感謝~! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.2.172 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1539239705.A.293.html
agiwar: 我用filter去做會 Runtime Error10/11 14:55
agiwar: https://imgur.com/a/vj9mwJl10/11 14:56
ckc1ark: max(set(x), key=lambda v:(x.count(v), -v)) 這樣呢10/11 15:20
tsoahans: https://i.imgur.com/qsn1bwg.jpg10/11 15:24
tsoahans: 阿 和樓上一樣10/11 15:24
Yshuan: 對set做max操作, 可能不保證order吧.10/11 15:46
ckc1ark: 所以先sort一下也可以 max(sorted(set(x)), key=x.count)10/11 15:51
agiwar: 感謝樓上大大們的回答,我想應該就是像Y大說的那樣。10/11 15:58
※ 編輯: agiwar (118.163.2.172), 10/11/2018 16:06:19
handsomeLin: 其實根本不用這麼花俏阿...不是用個dict就能解了嗎 10/12 14:01
handsomeLin: 一樣空間複雜度 多寫個六七行就能達到O(n) 為什麼不 10/12 14:15
handsomeLin: 用呢 10/12 14:15
jlhc: 同意樓上 10/12 23:05
handsomeLin: 補充 像這種寫法面試你寫都不一定寫的出來 還會寫錯 10/13 08:16
handsomeLin: 練習沒意義 10/13 08:16
agiwar: 我理解林帥的說法也同意,我會練習這種trick是因為有次面 10/15 12:02
agiwar: 試沒寫好,每題都要求一行完成... 10/15 12:02