编写一个Python函数直方图(l),它将带有重复的整数列表作为输入,并返回一对对列表

时间:2018-03-02 08:32:27

标签: python-3.x

编写一个Python函数直方图(l),它将带有重复的整数列表作为输入,并返回一对对列表,如下所示: 对于l中出现的每个数字n,函数返回的列表中应该只有一对(n,r),其中r是l中l的重复次数。

最终列表应按r(重复次数)的升序排序。对于具有相同重复次数的数字,请按照数字值的升序排列对。

例如:

  
    
      

直方图([13,12,11,13,14,13,7,7,13,14,12])       [(11,1),(7,2),(12,2),(14,2),(13,4)]

             

直方图([7,12,11,13,7,11,13,14,12])       [(14,1),(7,2),(11,2),(12,2),(13,2)]

    
  

3 个答案:

答案 0 :(得分:1)

>>> def histogram(L):
...     from collections import Counter
...     return Counter(L).items()
... 
>>> histogram([13,12,11,13,14,13,7,7,13,14,12])
[(11, 1), (12, 2), (13, 4), (14, 2), (7, 2)]
>>> histogram([7,12,11,13,7,11,13,14,12])
[(11, 2), (12, 2), (13, 2), (14, 1), (7, 2)]

答案 1 :(得分:0)

def histogram(l):
b=[]
x=[]
f=[]
for i in range(len(l)):
    a=()
    if l[i] not in x:
        c=l.count(l[i])
        f.append(c)
        f.sort()
        a=a+(l[i],c)
        b.append(a)
        x.append(l[i])
        del a
    else:
        continue
b=sorted(b,key=lambda f: (f[1],f[0]))
return b    

答案 2 :(得分:0)

如果您对我的代码有任何疑问,请随时提出。 如果我的代码需要任何改进,请告诉我。

{{1}}