从列表中制作条形图

时间:2017-02-12 19:08:47

标签: python list diagram

坚持这个问题。我有列表[6,7,7,8,10]。我需要制作如下图。

 6 *
 7 **
 8 *
 9 
10 *

4 个答案:

答案 0 :(得分:1)

如果列表已排序,您只需要从头到尾的数字图表。

a = [6, 7, 7, 8, 10]
for i in range(a[0], a[-1] + 1):
    print(i, sum([ k==i for k in a])*'*')

可以在未排序的列表上使用a[0]替换min(a)a[-1]替换max(a)

如果您不想打印零条目,请将range对象替换为sorted(set(a))

答案 1 :(得分:0)

data = [6, 7, 7, 8, 10] 

for item in range(min(data), max(data) + 1):
    print item, data.count(item) * '*'

输出:

6 *
7 **
8 *
9
10 *

答案 2 :(得分:0)

这应该适用于未排序的列表:

l = [6,7,7,8,10]

for i in range(min(l), max(l) + 1):
  print("%d: %s " % (i, '*' * l.count(i)))

<强>输出:

6: * 
7: ** 
8: * 
9:  
10: *

试试here!

答案 3 :(得分:0)

您可以使用词典完成此任务;

a=input()
d={}
# this function is used to generate the dictionary for your hitogram
def histogram(a):
    for i in a:
        try:
            d[i]=d.get(i)+1
        except:
            d[i]=1
# to display the histogram
def display(d):
    x=d.keys()
    x.sort()
    for i in x:
        print i,'*'*d[i]

现在检查执行时间:

import time
t=time.time()
a=[6,7,7,8,10]
d={}
def histogram():
    for i in a:
        try:
            d[i]=d.get(i)+1
        except:
            d[i]=1
histogram()
t1=time.time()
print t1-t

>>> 4.6968460083e-05