カナデKanade

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つずつ全部見ていくのも、繰り返し文でやります。

プレイグラウンド
結果
コードを書いて「実行」ボタンを押してください。