[问题] list 众数问题 (已解决)

楼主: agiwar (我就是我)   2018-10-11 14:35:03
大家好,小弟正在python刷题中
题目是这样的:给定一list找出众数值,
若出现次数一样多的元素不只一个,
则选出数值较小的元素。
这是我不import任何套件写的:
https://imgur.com/a/3ZVIwF3
不过交出答案后不通过
原因在于 max(set(arr), key=arr.count()) 不会找出最小的元素
(在相同出现次数条件下)
但是我自己去尝试别的list,却可以得到最小的元素
https://imgur.com/a/7it3xL4
还请有高手能替小弟解惑,感谢~!
楼主: agiwar (我就是我)   2018-10-11 14:55:00
我用filter去做会 Runtime Errorhttps://imgur.com/a/vj9mwJl
作者: ckc1ark (伪物)   2018-10-11 15:20:00
max(set(x), key=lambda v:(x.count(v), -v)) 这样呢
作者: tsoahans (ㄎㄎ)   2018-10-11 15:24:00
作者: Yshuan (倚絃)   2018-10-11 15:46:00
对set做max操作, 可能不保证order吧.
作者: ckc1ark (伪物)   2018-10-11 15:51:00
所以先sort一下也可以 max(sorted(set(x)), key=x.count)
楼主: agiwar (我就是我)   2018-10-11 15:58:00
感谢楼上大大们的回答,我想应该就是像Y大说的那样。
作者: handsomeLin (DoGLin)   2018-10-12 14:01:00
其实根本不用这么花俏阿...不是用个dict就能解了吗一样空间复杂度 多写个六七行就能达到O(n) 为什么不用呢
作者: jlhc (H)   2018-10-12 23:05:00
同意楼上
作者: handsomeLin (DoGLin)   2018-10-13 08:16:00
补充 像这种写法面试你写都不一定写的出来 还会写错练习没意义
楼主: agiwar (我就是我)   2018-10-15 12:02:00
我理解林帅的说法也同意,我会练习这种trick是因为有次面试没写好,每题都要求一行完成...

Links booklink

Contact Us: admin [ a t ] ucptt.com