Python.use(better)《09》データ構造(1)辞書〈Python 3.1〉

前の記事記事一覧次の記事
Python.use(better)


実録:はじめてのプログラミング《09》

ヒストグラム課題(1)辞書

《step 1》乱数を生成して、その出現頻度を求めます。

ヒストグラム課題を作成しながら、データ構造について学びます。

>>> from random import *
>>> help(randint)
Help on method randint in module random:

randint(self, a, b) method of random.Random instance
    Return random integer in range [a, b], including both end points.

乱数を利用するには、モジュール random を取り込みます。メソッド randint を利用すると、指定した範囲の乱数(整数)が得られます。すると、

>>> [randint(0,99) for _ in range(10)]
[72, 64, 34, 93, 47, 15, 3, 87, 18, 39]
>>> [randint(0,99) for _ in range(10)]
[52, 20, 36, 12, 35, 81, 62, 4, 19, 75]

それぞれに、0 から 99 までの乱数が10個ずつ得られます。

def ex():
    from random import *
    histo = {}
    for _ in range(100):
        n = randint(0, 9)
        histo[n] = histo.get(n, 0) + 1

    s = 0
    for k, v in histo.items():
        s += v
        print("{0:d}[{1:2d}]{2}".format(k, v, scale(v)))
    print(s)

メソッド dict.get を利用すると、指定したキーに対応する値が得られます。第1引数に指定したキーが見つからないと、第2引数が値として得られます。
そこで、メソッド randint を利用して、乱数(0 から 9 まで)を生成するとともに、その出現頻度を求めます。すると、次の結果から、

>>> ex()
0[14]....+....1....
1[11]....+....1.
2[14]....+....1....
3[ 8]....+...
4[13]....+....1...
5[11]....+....1.
6[ 5]....+
7[10]....+....1
8[ 8]....+...
9[ 6]....+.
100

乱数 3 を 8 個だけ生成するとともに、計 100 個の乱数を生成したのが分かります。

Tips

前の課題で作成した scale を再利用しています。すると、乱数の出現頻度を視覚的に確認できるので便利です。《うさぎ》

Last updated♪09/03/05