ロジカ式logo

はじめての
Python

ページ一覧に戻る
Lesson14-1 リスト
ロボた

これまで「変数」には、1つの値だけを入れていたよね!
だから、値がたくさんあるときには、たくさんの変数を作らないといけないよね!

りんごと変数

でも、変数が50個とか100個とかになったら、扱いにくくなっちゃうよね!

ロボち
ロボた

それなら、こんなふうに1つにまとめられたら便利だよね!

りんごとリスト

それが、これから学ぶ「リスト」なんだ!

ロボち

リスト

ロボた

「リスト」というのは、「関連のあるまとまったデータを扱うための、特殊な変数」なんだ!

学校には「クラス」があって、生徒がクラス別にまとめられているよね!

ロボち
クラスの生徒
ロボた

そして、生徒一人ひとりの名前が書かれた「出席簿」があるよね!

3年A組の出席簿

「リスト」というのは、この「出席簿」みたいなものなんだ!

ロボち
ロボた

これまでの変数には、値を1つだけ代入していたね!

変数と代入

リストは変数と違って、まとまったデータの数だけ入れる場所が確保されて、全体に名前をつけることができるようになっているよ!

ロボち
変数

基本型

リスト

リスト 基本型
リスト名 ロッカー
ロボた

リストには、何のリストかわかるように「名前」をつけるよ!

「値」のことは、「要素ようそ」とも言うよ!

ロボち
ロボた

値は、それぞれ別々の部屋に入れられていると思ってね!
それに、部屋を区別するための、番号がつけられているんだ!

この番号のことは、「インデックス」と言うよ!
そして、この「インデックス」は、必ず「0」から始まるんだ!

ロボち

使い方の例

📝1
3年B組の生徒名のリストです。

3年B組
EXAMPLE
class3B = ["青木雅弘", "石井さやか", "上田菜々子", "江口大和", "大森絵理子", "加藤健一", "川上翼", "木下由紀"]
ロボた

3年B組の生徒のリストなので、リスト名を「class3B」にしたよ!

値は、「[ ](角カッコ)」の中に「,」で区切って書いてね!
文字列は「" "」で囲むのも忘れないようにね!

ロボち
ロボた

「値」がたくさんあるときには、途中で改行しても大丈夫だよ!

次に、リストの中の値の取り出し方を教えるね!

ロボち

📝2
3年B組のリストから、インデックス番号を指定して生徒名を取り出す。

3年B組 インデックス番号
ロボた

リストの中から、任意の「値(要素)」を得るときには、インデックス番号を指定すればいいんだ!

リスト名の後ろに「[ ](角カッコ)」をつけて、その中に必要な値の入っている部屋のインデックス番号を書いてね!

ロボち
EXAMPLE
class3B = ["青木雅弘", "石井さやか", "上田菜々子", "江口大和", "大森絵理子", "加藤健一", "川上翼", "木下由紀"] print(class3B[4])
ロボた

いったん他の変数を用意しておいて、それに代入することもできるよ!

インデックス番号で指定するときは、番号が「0」から始まっていることを忘れないようにしてね!

ロボち
EXAMPLE
class3B = ["青木雅弘", "石井さやか", "上田菜々子", "江口大和", "大森絵理子", "加藤健一", "川上翼", "木下由紀"] student1 = class3B[0] student2 = class3B[1] student3 = class3B[2] student4 = class3B[3] student5 = class3B[4] student6 = class3B[5] student7 = class3B[6] student8 = class3B[7] print(student1) print(student2) print(student3) print(student4) print(student5) print(student6) print(student7) print(student8)

📝3
3年B組のリストの値を変更する。

3年B組 リストの値
EXAMPLE
class3B = ["青木雅弘", "石井さやか", "上田菜々子", "江口大和", "大森絵理子", "加藤健一", "川上翼", "木下由紀"] class3B[2] = "宇野海斗" print(class3B[2])
ロボた

リストの中の、任意の「値(要素)」を変更するときも、インデックス番号を指定して変更できるよ!

インデックス番号を使って、リストの中から必要な値を取り出したり、値を変更したりする方法が理解できたかな?

ロボち

📝4
最後の要素を得るときに、インデックス番号を間違って指定してしまったときのエラーです。

3年B組 エラー
ロボた

リストを使うときによくあるエラーが、インデックス番号を間違って指定してしまうエラーなんだ!

特に、リストの最後の要素のインデックス番号を指定するときに、間違えやすいよ!
リストの最後だから、つい要素の数を指定してしまうんだよね!

ロボち
EXAMPLE
#要素数が、8個のリスト class3B = ["青木雅弘", "石井さやか", "上田菜々子", "江口大和", "大森絵理子", "加藤健一", "川上翼", "木下由紀"] #最後の要素を得ようとして、要素数を指定してしまった! print(class3B[8])
ロボた

このエラーはよくあるので、間違わないよう気をつけるようにしてね!

最後の要素のインデックス番号は、「要素数 - 1」だよ!
なぜなら、インデックス番号は「0」から始まっているからね!

ロボち

📝5
乱数を使って、ランダムにリストの中の値を取り出す。

ロボた

インデックス番号を指定すれば、リストの中の値をどれでも取り出すことができるんだったね!

それで、乱数を使って、リストの中の値を取り出してみるよ!
何が出てくるかな?

ロボち
EXAMPLE
import random num = random.randint(0, 7) class3B = ["青木雅弘", "石井さやか", "上田菜々子", "江口大和", "大森絵理子", "加藤健一", "川上翼", "木下由紀"] print(class3B[num])
ロボた

実行するたびに、乱数で作られたインデックス番号の値が表示されているね!

乱数の範囲を指定するとき、間違わないように気をつけてね!

ロボち

やってみよう

⌨️1
3年B組のテストの点数のリストの中から、指定した要素の値を取り出してください

・リストの中の3番目と最後の要素の値を取り出し、表示してください。

PRACTICE
class3B_score = [80, 63, 90, 48, 70, 75, 56, 85, 95, 60]

📖 解答例と解説

class3B_score = [80, 63, 90, 48, 70, 75, 56, 85, 95, 60]

print(class3B_score[2])
print(class3B_score[9])
ロボた

リストの中の3番目ということは、インデックス番号は「2」で値は「90」だよね!

リストの要素数は10個だから、最後の要素のインデックス番号は「9」だよ!

ロボち

⌨️2
くじ引きを作ろう

・賞は、「特賞」「一等賞」「二等賞」「三等賞」「はずれ」の5つです。
・どれが当たるかは、乱数で決めてください。

PRACTICE

📖 解答例と解説

import random
num = random.randint(0, 4)

prize = ["特賞", "一等賞", "二等賞", "三等賞", "はずれ"]

print(prize[num])
ロボた

リストの要素数は、5つだね!

だから、乱数の範囲は「0, 4」だよ!

ロボち
POINT
  •   関連のあるまとまったデータを扱うときは、「リスト」を使う。
  •   何のリストかわかるように「名前」をつける。
  •   値のことを要素とも言う。
  •   要素には、順番にインデックス番号がついている。
  •   インデックス番号は、「0」から始まっている。
  •   リストの最後の要素のインデックス番号は、「要素数 - 1」。