こんにちわ!このサイトではPythonの初学者のための内容となっております。
前回の内容は複雑な処理を行うための第一歩として、条件分岐とループ文について学習しました。
前回の記事
今回は、プログラミングを行うにあたって、大量のデータを扱うのにとても便利な配列について学んでいきましょう。
配列を理解すれば、前回学んだループ文と組み合わせて大量の処理を少ないコードで記述することが出来ます!
たのしみですねぇ~!頑張りましょう!
コンテンツ
プログラミングスクールに関しては下の記事で詳しく記述しています。
こちらで紹介しているスクールは、すべて無料期間がある優良なスクールのみで、特徴を明確にし、読者のニーズに絞って丁寧に解説しました。初めての一歩として、無料説明会に参加してみてください。
Let’s practice a little!!
そもそも配列とは?
配列とは、たくさんのデータを格納できる「箱」のようなものです。
例えば以下のコードを見てください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Japanese = 80 Math = 90 Science = 70 Society = 30 English = 50 score = Japanese + Math + Science + Society + English average = score / 5 print("5科目合計点数は" + str(score) + "点です。") #5科目合計点数は320点です。 print("5科目平均点数は" + str(average) + "点です。") #5科目平均点数は64.0点です。 |
この例では5科目の合計点数と平均点数を計算しているのはわかると思います。
しかし、それらの計算をするだけでこんなに長いコードを書かなくてはいけません。
しかも、科目数が9科目など増えてくるとさらにコードは長くなり、
可読性に欠けてしまいます。
また、いちいち計算をさせるコードを変更する必要も出てきてしまいます。
これではあまりよいプログラムとは言えません。
それではどのようにすればよかったのかを学んでいきましょう!
9科目になると確かにコードを書くのが大変だなぁ~!
せやで!楽に書くためにも配列を学ぼうな!
「楽に書ける」っていってるけどどうやってやるの?
じゃあまずは配列の基本を押さえよう!
配列とは、同一のデータの型を複数格納できるデータ構造です。
例えば以下の通りです。
1 2 |
scores = [80, 90, 70, 30, 50] words = ["apple", "banana", "Cherry", "10", "20", "30"] |
一つの配列に数字を格納したいのなら数字のみを、文字列を格納したいのならば文字列のみを順番に書いていきます。「words」の後半も数字に見えるかもしれませんが「””」で囲っているので実際は文字列として認識されます。
書き方はわかったけどどうやって扱うのさ!?
配列を扱うのに便利な関数を少し扱ってみます。
下のコードをみてみてね!
1 2 3 4 5 6 7 8 9 10 |
scores = [80, 90, 70, 30, 50] score = sum(scores) average = score / len(scores) print("5科目合計点数は" + str(score) + "点です。") #5科目合計点数は320点です。 print("5科目平均点数は" + str(average) + "点です。") #5科目平均点数は64.0点です。 |
おぉ!さっきよりもコードが短くなった!
だがしかし!わからん!ピエン!
では、この記事を書いているお兄さんが解説するよ!笑
まずは、1行目の「scores」ですが、これは国・数・社・理・英の点数を順番に定義しているイメージです。
2行目ですが、Pythonの場合、配列の要素の合計を計算するときは、「sum」関数を使えば簡単で便利です。
また、3行目には要素数を求める関数として「len」関数を用いています。
これは、今回の場合、科目数は「5」なのでこの行で計算しているのは合計点を科目数で割っているので、結果として平均点を求めていることになります。
この「len」関数はとても便利でよく使う関数なので覚えておくといいですよ~!
Let’s practice more!!
for文について
次は配列を処理するのに便利な「for」文について学んでいきましょう!
ふぉぉぉぉぉぉぉぉ~!
「for文」は「while文」と同じくループ処理を行うための関数です。
これらの関数の使い分けはというと、
- 決まった回数だけ同じ処理をしたいとき → 「for」文
- 回数は決まっていないが繰り返したいとき → 「while」文
といった使い分けを行うのが一般的だと思います。
では、そんな「for」文の使い方を見ていきましょう!
1 2 3 4 5 6 7 8 9 10 |
for i in range(5): print(i) """ 0 1 2 3 4 """ |
なんか0から出力されてる!!
そう!そこが重要!しかも「5」は出力されていないんだよ!
ここで大事なのは2つあります。
1つ目は、「i」という変数には最初は「0」が格納されているということです。
今回の場合「0」から「5」を含めない整数回、すなわち「4」までを変数「i」に代入されています。
その結果このような出力になっているのがわかります。
2つ目は、配列の要素番号(index)も「0」から始まるということです。
「1」じゃないです!!「0」です!!
ですので、「for」文を用いて、各教科の点数を参照するためのコードは以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
scores = [80, 90, 70, 30, 50] subjects = ["国語", "数学", "理科", "社会", "英語"] for i in range(len(scores)): print(subjects[i] + "は" + str(scores[i]) + "点です。") """ 国語は80点です。 数学は90点です。 理科は70点です。 社会は30点です。 英語は50点です。 """ |
解説くれ泣
お兄さん~!!笑
はい!お兄さん登場です!
まずは、2行目に各教科の名前を準備しておきました。
この配列は、1行目の「scores」に格納されている値と対応させています。
ここからが複雑になりますね。
「for」の後には変数「i」には要素番号が代入されて、配列を順番に参照していくための変数であることがわかります。また、配列は、上記に書いたように要素番号(index)は「0」から始まりますので「scores」から「80」、「subjects」から”国語”が参照されています。これを5回繰り返した結果が今回の出力結果となります。
以前の記事で、文字列と整数を1つの「print」関数で出力できないということを覚えていれば、「str」関数を用いることもわかったかもしれませんね!
Today’s final practice!!
まとめ
今回は、配列についての記述でした。
配列と、ループ文を組み合わせることで、1度に大量の処理が行えるようになり、処理の効率化が出来ます。また、同じような記述をする必要がなくなり、プログラマーにとっても非常に読みやすいものになることがわかりました。
本日の理解度調査
今日の最後に理解度調査をします!!
どうすれば正しくなるのか考えてみてね!!
・合計点を求めるコード「for」文をもちいて記述します。
1 2 3 4 5 6 7 8 |
scores = [80, 90, 70, 30, 50, 100, 0, 90] score = 0 #合計点を計算するための変数 for i in range(len(scores)): ??? #ここに入れる式はなにかな? print("合計は" + str(score) + "点です。") #合計は510点です。 |
正解は。。。
1 2 |
score = score + scores[i] #score += scores[i] でも可 |
わかったかな??正解出来たら今回の項目は完璧だね!!