プログラムには独特な考え方が色々あるけど、今回紹介するリストというのは特に独特だ。
え、、それはこわいですねぇ。。
大丈夫、独特なだけで難しくは決してない!基礎から解説していくから頑張って乗り切ろう。
そうだよ。グリコちゃん、ここを乗り切ればある意味プログラミングの基礎が固まるってことさ!
すごい、僕が言いたかったこと先に言われた!!
リストってなに?
たくさんのデータを扱う場合、前回まででやった変数と似ているけど、ちょっと違う「リスト」というのを使うんだ。
「リスト」は一言で言うと、変数という箱を繋げた列車のようなものだよ。
番号付きの箱で、前から4番目に「おはよう」と言った文字列が入っているという状態を作り出すことができるんだ。
リストの書き方
実際にリストをプログラムとして書いていくのがわかりやすいと思う。
リストの書き方はこんな感じ。
Lunch = [“おにぎり”、 “サンドイッチ”, “ラーメン”, “そば”]
Lunchという名称のリストを作っている形だね。
“おにぎり”などの箱の中身のことを、「要素」という呼び方もする。
今回の例なら要素数は4。数えるときは0から始まるから気をつけてね。
0から始まるっていうのはどういうことですか?
”おにぎり”を呼び出したい時は、Lunch[0]という書き方をするってことだよ。
あ、普通に数えるときは”おにぎり”は一番目にあるから1としそうなのに違うんですね!
どうして、1番目なのに0なの?
パソコンの場合、数字は必ず0から始まるんだ。
僕たちの世界では0は何もないを表すけど、パソコンの世界では0も立派な一つの数字って解釈するってわけ。
リストの中身
リストの中身は最初に決めた形であれば、自由に変更できるんだ。
例えば、Lunch = [“おにぎり”、 “サンドイッチ”, “ラーメン”, “そば”]とリストを定義した場合は、リストの中身はString型であれば自由に変更できるってわけ。
つまり、Lunch[0] = “カップ麺”というプログラムを書けば、
リストはLunch = [“カップ麺”、 “サンドイッチ”, “ラーメン”, “そば”]となるわけだ。
注意点は最初に決めた型は変えられないってところ。
だから、Lunch[0] = 5なんてしても、エラーとなるんだ。
どうしても数値をリストで持ちたい場合は、
Numbers = [5, 6, 4, 3, 10, 5]のようにしなければいけないってわけ。
数字をリストで持ちたいってことあるの?全部変数で持てばいいんじゃないの?
すごく良い観点の質問だ!
確かに変数で持つことも可能だけど、データが多くなると管理が大変になるんだ。
例えば、生徒一人一人の国数英社理の5科目のテストの結果を保存しようと思ったとする。
変数だと、
seito1_koku = 85
seito1_su = 75
seito1_ei = 90
seito1_sya = 45
seito1_ri = 95
という感じで、生徒数×5の変数が必要になる。
ただ、これをリストにすると
seito1_test = [85, 75, 90, 45, 95]
と一行で書くことができるし、数も生徒数分で済むんだ。
リストは変数をまとめて持ってくれるイメージで、楽をさせてくれる存在なんだよ。
おみくじプログラムのリスト解説
以前やったおみくじのプログラムにもリストが使われていたよね。
リストがわかった今、そのプログラムの意味もわかると思う。
import random
kuji = [“大吉”, “中吉”, “吉”, “凶”]
print(random.choice(kuji))
というプログラムだったね。
Importについては今回は無視して、その後に出てくるリスト。
これは文字列をkujiというリストで持っている形だ。
例えば、kuji(0)とやった場合、何が出てくるかわかるかな?
そう、”大吉”が出てくる。
同様に、kuji(2)だったら”吉”、kuji(3)だったら”凶”となる。
最後のprintは表示するって意味だった。その中のrandom.choice(kuji)が問題だね。
このプログラムの意味は、「kujiというリストからランダムに一つを選択してください」だよ。
つまり、kujiリストからテキトーに一つの文字列を選出するってわけ。
ランダムになっているから、プログラムを実行するたびに、kujiのリストからランダムに結果が選出されて大吉だったり、凶になったりするってことだ。
ふと気になったんですが、ランダムってどうやって決めているものなんですか?
人間の場合指が止まったところとかで決めたりできそうですが
実はパソコンは完璧なランダムってのが苦手なんだ。
だから、時間をうまく使ってランダムな数字を作っていることが多いよ。
例えば、現在の分数×秒数とかやってね。
それだと、どこかのタイミングで全く同じランダム数字が出ることありませんか?
その通り!
だけど実際にそれが全く同じ計算式で出てきたランダムな数字かは
パソコンを見ている僕たちからはわからないってわけさ。
まとめ
今回はデータを扱う上で欠かせないリストを紹介してきたわけだけどどうだった?
変数にめちゃくちゃ似てるからわかりやすかったかな
私は0のところが慣れなさそうだったので、復習しておきます!
プログラミングぐらいでしか、始まりが0ってのはないから
ちゃんと覚えておくと逆にこれからが有利になるから頑張って!
次回はプログラミングのルール三つの基本を押さえていくよ!