作者agiwar (我就是我)
看板Python
標題[問題] list 眾數問題
時間Thu Oct 11 14:35:03 2018
大家好,小弟正在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
推 ckc1ark: max(set(x), key=lambda v:(x.count(v), -v)) 這樣呢10/11 15:20
→ 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