2017-02-12 10 views
-2

この問題が発生しました。私はリスト[6,7,7,8,10]を持っています。私は以下のような図を作る必要があります。リストから棒グラフを作成する

6 * 
7 ** 
8 * 
9 
10 * 
+0

は、値がソートされていますか?あなたの試みは何ですか? –

答えて

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 * 
1

場合。 max(a)によってmin(a)a[-1]a[0]を置き換えるソートされていないリスト上で動作するように、このため

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

ゼロエントリを印刷しない場合は、rangeオブジェクトをsorted(set(a))に置き換えます。

0

これはソートされていないリストのaswellで動作するはずです:

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!

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 
関連する問題