7. まとめたデータ(リスト、辞書)
いくつもの値を1つにまとめて扱いましょう。
この章で学ぶこと
- 値を順番にまとめるリストを作る、取り出す、変える
- リストの前後に入れる、取り出す
- 名前で値を探す辞書
- まとまりにタイプを付ける、同じまとまりを一緒に使う名札
生徒30人の点数を、『点数1』、『点数2』、…と30個の名札で作るわけにはいきませんよね?値がいくつもあるときは、まとまりに入れます。カナデのまとまりは2種類です。
| まとまり | 形 | 値の探し方 | 例 |
|---|---|---|---|
| リスト | 【 】 |
何番目か | 果物のリスト、点数のリスト |
| 辞書 | { } |
名前(キー)で | 1人の生徒の国語・数学の点数 |
リストを作る
すみつきかっこの中に、値をコンマで並べます。
『果物』を【「りんご」, 「ぶどう」, 「バナナ」】にしよう
『果物』を出力しよう
(『果物』の『長さ』)を出力しよう
[りんご, ぶどう, バナナ]と3が出ます。『長さ』で、いくつ入っているかが分かります。何も入っていない空のリストは【】です。
何番目かの値を取り出す
文字列と同じように、1番目から数えます。
『果物』を【「りんご」, 「ぶどう」, 「バナナ」】にしよう
(『果物』の1番目)を出力しよう
(『果物』の3番目)を出力しよう
『順番』を2にしよう
(『果物』の『順番』番目)を出力しよう
(『果物』の(『順番』 + 1)番目)を出力しよう
りんご、バナナ、ぶどう、バナナが出ます。番目には数字だけでなく、名札や計算式も使えます。計算式はかっこで囲んでください。
値を変える
『リスト』のN番目を値にしようで、その場所の値を変えます。
『果物』を【「りんご」, 「ぶどう」, 「バナナ」】にしよう
『果物』の2番目を「いちご」にしよう
『果物』を出力しよう
[りんご, いちご, バナナ]が出ます。(文字列は文字を変えられませんでしたが、リストは変えられます。)
入れる・取り出す
| 書き方 | すること |
|---|---|
『リスト』に値を追加しよう |
いちばん後ろに入れます |
『リスト』の前に値を追加しよう |
いちばん前に入れます |
『リスト』の後から取り出そう |
いちばん後ろの値を取り出します |
『リスト』の前から取り出そう |
いちばん前の値を取り出します |
『x』を『リスト』の後から取り出した値にしよう |
取り出しながら、その値を『x』に入れます |
『列』を【「太郎」, 「花子」】にしよう
『列』に「次郎」を追加しよう
『列』の前に「カナデ」を追加しよう
『列』を出力しよう
『最初の客』を『列』の前から取り出した値にしよう
枠「{『最初の客』}さん、どうぞ!」を出力しよう
『列』を出力しよう
[カナデ, 太郎, 花子, 次郎]、カナデさん、どうぞ!、[太郎, 花子, 次郎]が出ます。行列のように後ろに入れて前から取り出すと、先に来た人が先に出ていきます。
リストを丸ごと空にするには、〈空にする〉()を使います。
『やること』を【「掃除」, 「洗濯」】にしよう
『やること』の〈空にする〉()を実行しよう
(『やること』の『長さ』)を出力しよう
辞書: 名前で探す
辞書は、名前(キー)と値のペアをまとめます。波かっこの中にキー: 値をコンマで並べます。
『点数』を{「国語」: 90, 「数学」: 80}にしよう
(『点数』の「国語」)を出力しよう
90が出ます。リストが「何番目」で探すなら、辞書は「何という名前」で探します。
辞書に入れる・変える
ないキーに値を入れると新しくでき、あるキーに入れると変わります。
『点数』を{「国語」: 90, 「数学」: 80}にしよう
『点数』の「英語」を70にしよう
『点数』の「数学」に10を足そう
『点数』を出力しよう
{国語: 90, 数学: 90, 英語: 70}が出ます。
キーがあるか確かめる
ないキーを取り出すとエラーになります。確かでないときは、〈含むか確認〉(キー)で先に確かめてください。キーがあれば真、なければ偽です。
『点数』を{「国語」: 90}にしよう
もし(『点数』の〈含むか確認〉(「理科」))なら:
(『点数』の「理科」)を出力しよう
それ以外なら:
「理科の点数はまだありません。」を出力しよう
まとまりの中のまとまり
リストの中にリストや辞書を、辞書の中にリストを入れられます。外側から順番に取り出せばいいんです。
『生徒』を{「名前」: 「カナデ」, 「趣味」: 【「読書」, 「プログラミング」】}にしよう
((『生徒』の「趣味」)の2番目)を出力しよう
『クラス』を【{「名前」: 「花」, 「点数」: 90}, {「名前」: 「葉」, 「点数」: 85}】にしよう
((『クラス』の2番目)の「名前」)を出力しよう
プログラミングと葉が出ます。こういうまとまりを1つずつ全部見ていく方法は、次の章(繰り返し)で学びます。
まとまりにタイプを付ける(選んでOK)
1章のタイプのように、まとまりにも何を入れるかを決めておけます。
| タイプ | 意味 |
|---|---|
【リスト】 |
何でも入れるリスト |
【(文字列)リスト】 |
文字だけを入れるリスト |
【(数字)リスト】 |
数字だけを入れるリスト |
【辞書】 |
何でも入れる辞書 |
【(文字列, 数字)辞書】 |
キーは文字、値は数字の辞書 |
『点数たち』を【(数字)リスト】の【90, 85】にしよう
『点数たち』に77を追加しよう
『点数たち』を出力しよう
数字のリストに文字を入れようとするとエラーになるので、間違いを早く見つけられます。
『点数たち』を【(数字)リスト】の【90, 85】にしよう
『点数たち』に「百点」を追加しよう
同じまとまりを一緒に使う名札
リストと辞書は、別の名札に入れてもコピーされず、同じまとまりを一緒に指します。 片方で変えると、もう片方でも変わって見えます。
『元』を【1, 2】にしよう
『別の名前』を『元』にしよう
『別の名前』に3を追加しよう
『元』を出力しよう
『元』にも3が入った[1, 2, 3]が出ます。1つのまとまりに名札を2つ付けたのと同じです。数字や文字列では、こうして一緒に変わることはありません。
よくある間違い
1. ない番目や、ないキーを取り出す
『果物』を【「りんご」, 「ぶどう」】にしよう
(『果物』の3番目)を出力しよう
「リストの長さを超えた位置(インデックス)です。」 が出ます。リストは『長さ』より大きい番目がなく、辞書は〈含むか確認〉で先に確かめてください。空のリストから取り出してもエラー(「リストが空です。」)になります。
2. 0番目から数える
リストも1番目から数えます。
3. 一緒に変わることを知らずに使う
リストを別の名札に入れて、その名札を変えると、元のリストも変わります(上の例)。意図したことでなければ、同じリストを2つの名前で使わないでください。
まとめ
| やりたいこと | リスト | 辞書 |
|---|---|---|
| 作る | 【「あ」, 「い」】 |
{「キー」: 値} |
| 取り出す | 『リスト』の1番目 |
『辞書』の「キー」 |
| 変える | 『リスト』の1番目を値にしよう |
『辞書』の「キー」を値にしよう |
| 入れる | 『リスト』に値を追加しよう(前に: の前に) |
『辞書』の「新しいキー」を値にしよう |
| 取り出して消す | 『リスト』の後から取り出そう/前から取り出そう |
— |
| 個数 | 『リスト』の『長さ』 |
— |
| あるかどうか | — | 『辞書』の〈含むか確認〉(「キー」) |
| 空にする | 『リスト』の〈空にする〉() |
— |
練習問題
1. 好きな食べ物3つをリストに入れて、2番目の食べ物を出力したあと、いちばん後ろに食べ物を1つ追加して、リスト全体を出力してみましょう。
答えの例
『食べ物』を【「おにぎり」, 「ラーメン」, 「たこ焼き」】にしよう
(『食べ物』の2番目)を出力しよう
『食べ物』に「お好み焼き」を追加しよう
『食べ物』を出力しよう
2. 友だちの名前と年齢を辞書に入れて、枠で「カナデは20歳です。」のように出力してみましょう。
答えの例
『友だち』を{「名前」: 「カナデ」, 「年齢」: 20}にしよう
枠「{『友だち』の「名前」}は{『友だち』の「年齢」}歳です。」を出力しよう
3. 下のコードを実行する前に、最後の行に何が出るか予想してみましょう。
『かばん』を【「本」, 「筆箱」】にしよう
『私のかばん』を『かばん』にしよう
『私のかばん』の後から取り出そう
『かばん』を出力しよう
答えを見る
[本]が出ます。『私のかばん』と『かばん』は同じリストを指しているので、『私のかばん』から取り出すと『かばん』からもなくなります。
次の章では、同じことを何度もする繰り返し文を学びます。まとまりの中の値を1つずつ全部見ていくのも、繰り返し文でやります。