这是使用Python打高尔夫球的提示问题,这是main的主题。
我正在寻找以最短的方法获取Python列表中所有最常见元素的最短方法。这是我尝试过的方法,假设列表位于一个名为的变量中l
:
from statistics import*
mode(l)
如果存在多种模式,则会引发错误。
max(l,key=l.count)
这仅返回1个项目,我需要获取所有具有最大数量的元素。
from collections import*
Counter(l).most_common()
这将返回的元组列表(element, count)
,按计数排序。从中我可以拉出所有相应元素等于第一个元素的所有元素,但是我认为没有比这更好的高尔夫方法了:
from collections import*
c=Counter(l).most_common()
[s for s,i in c if i==c[0][1]]
我敢肯定有更短的方法!
另外,如果可以在不进行变量分配或不使用的情况下完成此操作l
,则我可以将其余代码保留为lambda表达式,以节省更多字节。
编辑:根据@Uriel的建议,我们可以执行以下操作:
{s for s in l if l.count(s)==l.count(max(l,key=l.count))}
我可以别名list.count
几个字节:
c=l.count;{s for s in l if c(s)==c(max(l,key=c))}
@Uriel指出我们可以通过以下方式获得更多的字节map
:
c=l.count;{s for s in l if c(s)==max(map(c,l))}
相关,但不能满足我的需求
—
musicman523 '17