LoginSignup
0
0

More than 1 year has passed since last update.

リストの中のリスト??めっちゃリスト??

Posted at

この記事は、岩手県八幡平市のプログラミング教室「アクセルキャンプ」の公開教材です。
アクセルキャンプ(フリースペースプラウド)のリンク
教材の作成依頼等も承っております。ご意見等は、リンク先の問い合わせ欄からお願いします。
教材の転用・利用等は自由です。

「リストの中のリストってのはよ、俺見たいなリストを言うんだぜ」

とかって意味ではないです。意味わかんないですよね。まあ、リッキー先生はイケメンの中のイケメンってよく言われますが、それってただイケメンってだけだよね、といつも心のなかで思っています。

リストの復習

リストは複数のデータをひとまとめにして、変数名をつけたものでしたね。こんな感じのやつです。

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の使い方もここにまとめたので、よかったら見てみてください!
ではまた来週!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0