この記事は、岩手県八幡平市のプログラミング教室「アクセルキャンプ」の公開教材です。
アクセルキャンプ(フリースペースプラウド)のリンク
教材の作成依頼等も承っております。ご意見等は、リンク先の問い合わせ欄からお願いします。
教材の転用・利用等は自由です。
「リストの中のリストってのはよ、俺見たいなリストを言うんだぜ」
とかって意味ではないです。意味わかんないですよね。まあ、リッキー先生はイケメンの中のイケメンってよく言われますが、それってただイケメンってだけだよね、といつも心のなかで思っています。
リストの復習
リストは複数のデータをひとまとめにして、変数名をつけたものでしたね。こんな感じのやつです。
ricky = ["イケメン", "天才", "やさしい"]
リッキー先生の100くらいあるいいところを3つの項目に絞って書いたわけですが、ちょっとシンプルすぎるので、それぞれの要素を深掘りしたいです。単純に
ricky = ["かっこいい", "スタイル抜群", "マッチョ", "IQ300","20ヵ国語喋れる"...]
とかって、ずーっと要素を書き足していってもイイんですが、なんせいいところが1000くらいあるので、超絶見にくくなります。そこで便利なのが、リストの中のリスト=多次元配列ってやつです。リストの中のデータの一つとして、小さいリストを入れることができます。実際に書いてみましょう。
ricky = [
["かっこいい", "スタイル抜群", "マッチョ"],
[ "IQ300","20ヵ国語喋れる", "天才プログラマー"],
["みんなに好かれてる", "性格もイケメン", "いつも他人のことを考えてる"],
["メッチャモテる"]
]
書いてて蕁麻疹(じんましん)が出た人は、きっと疲れてるんですね。今すぐお医者さんに行きましょう。「あれ?項目一つ増えてね?」と思った人、気のせいです。
という冗談はさておき、この多次元配列、プログラミングをやってるとめちゃくちゃ使います。
例えばですが、皆さんのお家の電話番号や住所を、リストとして使うことをかんがえてみてください。電話番号と住所を登録するとして、
Aさん:電話番号111ー1111-1111 住所A件B市C-1
Bさん:電話番号222ー2222-2222 住所D件E市F-1
Cさん:電話番号333ー3333-3333 住所G件H市I-1
て感じだったとしましょう。
これを全部横並びにすると、何がなんだかわからなくなります。
information = ["Aさん", "111ー1111-1111","A県B市C-1", "Bさん", "222ー2222-2222", "D県E市F-1", "Cさん", "333ー3333-3333", "G県H市I-1"]
これを、Aさんだけの情報、Bさんだけの情報 Cさんだけの情報に分けた2次元配列にしてみましょう。
information = [
["Aさん", "111ー1111-1111","A県B市C-1"],
["Bさん", "222ー2222-2222", "D県E市F-1"],
["Cさん", "333ー3333-3333", "G県H市I-1"]
]
これで、だいぶ見やすくなりました。
二次元配列からのデータの持ってきかた
上のプログラムから、Bさんの住所の情報を持ってきて表示したいとき、どうしたらいいでしょう?リストでは最初はゼロから始まることは覚えてますね。informationリストの中で、Bさんの情報は2番目=1番目なので、まずはこれを表示してみましょう。
#リストは省略
print(information)
実行結果:['Bさん', '222ー2222-2222', 'D県E市F-1']
こんな感じで、Bさん関連の情報がまるっと出てきました。
その中の一つだけ、住所だけ抜き出したいんでしたね。住所はこの小さいリストの3番目=2番め名ので、このようにすると持ってこれます。
#リストは省略
print(information[1][2])
このようにして、大きいリストから順番にインデックス番号(要素の番号)を指定していきます。「infromationリストの中の◯番目のリストの中の△番目の要素」といった感じで指定したい場合は、
infromation[◯][△]
といった形になります。
これって一体何に使うの?
例えばインベーダーゲームのようなゲームを作っていて、敵の場所を格納しておくリストを作成するとします。
こういう場合、X座標とY座標があり、「この敵のx座標を知りたい」「この敵をY方向に動かしたい」みたいな状況がよくあります。そんなときは、x座標とY座標のみの小さなリストを、大きなリストにいくつも入れることで、全ての敵の座標が管理できます。
enemy = [
[10, 200],
[150, 327],
[49, 68],
...
]
こんな感じで、データをいい感じに管理するのに超便利なので、覚えといてください。
宿題!
自分の家族の家族の名前、誕生日をまとめたinformationリストを作りましょう。
そして、その中から自分の誕生日だけを出力してみてください。
余裕があれば、更にメンバーを追加したり、身長など他のデータもリストに入れて管理してみましょう。(体重とかは書く前に本人に聞こうね!!念のため!!)
今回は以上ですが、授業でやったblenderの使い方もここにまとめたので、よかったら見てみてください!
ではまた来週!!