コンテンツにスキップ

Python基礎その3(リスト)

この章のキーワード

  • リスト
  • インデックス
  • randomライブラリ
  • random.randrange()
  • メソッド

1.リストを使おう

色鉛筆の色(赤、青、黄色、緑・・・)や、学校のクラスメート(木村さん、加藤さん、上杉さん・・・)のように、たくさんあるものをプログラムで扱う時に便利なのが リスト です。他のプログラミング言語では 配列(はいれつ) とも呼ばれます。ここでは、おみくじの内容をリストで表してみることにしましょう。

kuji = ["大吉","中吉","小吉"]
print(kuji[0])

このプログラムを実行すると「大吉」が表示されます。

"大吉"が表示される

“大吉”が表示される

解説

リストの初期化

[]を使うことでリストを作ることができます。 , (カンマ)で区切って内容を複数入れます。おみくじのリストは文字なので、 " で囲むことに注意してください。ここでは、 kuji というリストを作りました。

kuji = ["大吉","中吉","小吉"]

リストからの値の取り出し

リスト kuji の中からひとつの要素を取り出す時には、 kuji[0] のように [] の中に数字を入れます。この数字のことを インデックス または 添字(そえじ) と呼びます。1番目の「大吉」を取り出すときは0、2番目の「中吉」を取り出すときは1を指定します。リストのインデックスは1ではなく0から始まることに注意してください。

print(kuji[0])

やってみよう1

“吉”や”凶”もリストに増やして表示させてみてください。

2.おみくじを作ろう

おみくじのリストを作ったので、実際に毎回違ったものが表示されるようにコードを追加しましょう。

import random
kuji = ["大吉","中吉","小吉"]
i = random.randrange(3)
print(kuji[i])

プログラムを実行すると、その都度「大吉」・「中吉」・「小吉」のどれかが表示されます。

ランダムに表示される

ランダムに表示される

解説

randomライブラリの読み込み

ランダムにくじを出すために、 random(ランダム) ライブラリを使います。 ライブラリ というのは、他の人が作ったプログラムのことです。 import(インポート) は「読み込む」という意味です。

import random

randrangeを使う

randomライブラリの randrange() 関数は与えられた数字未満の整数をランダムで返します。この場合、 randrange(3) なので、変数 i には0,1,2のうちのどれかの数字が代入されます。

その結果、4行目のprint文で大吉・中吉・小吉のどれかが表示されます。

i = random.randrange(3)
print(kuji[i])

3.リストとfor文

リストはfor文と組み合わせると便利です。名前をリストで与えるとみんなに挨拶するプログラムを書いてみましょう。

names = ["りゅう","レイ","ミサト","だいき"]
for name in names:
print(name + "さんこんにちは")

プログラムを実行するとそれぞれの人への挨拶文が表示されます。

Untitled

解説

forでの要素の取り出し

for 変数 in リスト という書き方で、リストの中の要素ひとつひとつを繰り返し処理できます。 in は「~の中に~」という意味なので、全体では「リストnamesの要素を変数nameに入れて繰り返す」という意味になります。

このように、Pythonではリストをかんたんに繰り返し処理することができます。

for name in names:

4.最大値を求めよう

リストの中のデータは文字列以外にも入れることができます。今度は、数字のリストを作ってその中で一番大きい数字を見つけてみましょう。

nums = [2,5,3,9,1]
max_num = 0
for num in nums:
if max_num < num:
max_num = num
print(max_num)

このプログラムを実行すると、最大の数9が表示されます。

9が表示された。

9が表示された。

解説

リストと変数を初期化する

リスト numsを初期化します。数字をカンマで区切って代入しています。変数 max_num には、最大の数を入れます。最初はデータを比較してないので0にしておきます。

nums = [2,5,3,9,1]
max_num = 0

数字をひとつずつ比較する

3行目の for num in nums ではリストnumsから一つずつ取り出してnumに入れています。4行目と5行目では、max_numとnumを比較してnumのほうが大きかったらmax_numにnumを代入しています。

たとえばnumsの最初は2なので、max_numの0とnumの2を比較して、numのほうが大きいのでmax_numを2にしています。

for num in nums:
if max_num < num:
max_num = num

やってみよう2

下は、数字の入ったリストの中から最小値を求めるプログラムです。答えは1になるはずですがうまくいきません。コードを修正してください。

nums = [2,5,3,9,1]
min_num = 0
for num in nums:
if min_num > num:
min_num = num
print(min_num)

5.リストを操作しよう

リストに値を追加したり、並べ替えたりするのには、便利なリストの メソッド が使えます。メソッドは、リストのあとに . で書きます。

nums = [10,6,3,8,20]
nums.append(5)
print(nums) # [10,6,3,8,20,5] が出力される
nums.sort()
print(nums) # [3,5,6,8,10,20] が出力される
nums.reverse()
print(nums) # [20,10,8,6,5,3] が出力される

解説

append()

append() は要素を追加するメソッドです。この例では、リストの最後に5が追加されます。

nums.append(5)

sort()

sort() は並べ替えのメソッドです。数字の場合は小さい順に並べ替えられます。

nums.sort()

reverse()

reverse() は逆順にするメソッドです。

nums.reverse()

やってみよう3

リスト [10,6,3,8,20] を、メソッド reverse()使わず に逆順にするプログラムを書いてください。

まとめの課題

大吉、中吉、小吉、凶が出るおみくじを作ってください。ただし、凶が出る確率は他のくじの1/3にしてください。

(応用)

100回以上おみくじを引いて集計し、それぞれの出る確率を確認できるプログラムを作ってください。結果は、例えば次のように確率が分かるように表示してください。

実施回数 100000
大吉 30046回 30.0%
中吉 29853回 29.9%
小吉 30169回 30.2%
凶  9932回 9.9%