《09》データ構造(1)辞書〈Python 2.x 版〉

実録:はじめてのプログラミング記事一覧
《09》データ構造(1)辞書

《著》小粒ちゃん+α《監修》小泉ひよ子とタマゴ倶楽部
2009年1月26日(月)

今日の進捗

  • Tutorial: Input and Output
  • Python.use(better) -- セミナー研修テキスト
  • ヒストグラム課題を「続・ひよ子のきもち」で公開
Comment
本人:野中 6章を読み飛ばして7章から再開しました。
担当:伊藤 ↑と言いつつ、すでにfrom...importなどを利用しています。課題をこなした後でもかまわないので、前に戻って読み返すと理解が深まるでしょう。

ヒストグラム課題(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 "%d[%2d]%s"%(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/06