Python学習 カテゴリ | |
前回 | 次回 |
今回は 配列 と、 for文 を使った繰り返し処理について学んでいきます。
配列はfor文でも使う重要な要素であることから、先に学んでおく必要があるため、for文の学習に備えるという狙いがあります。また、今回は学習量が多くなりますので、メソッドに関しては配列を学んでいく上で “最低限必要なメソッド” に絞って解説していきます。
今回はVSCode上で練習用ファイルとして「practice-list.py」というファイルを作って進行していきますので進行を合わせたい方は同様に「practice-list.py」を作成して学習を進めていきましょう。
前回のおさらい
前回はif文について勉強していきました。if文でも応用できる論理演算子AND/OR/NOTについて学び、AND/OR/NOTが組み合わせて使えることを学べました。
- ANDは、if X and Yとしたとき、「Xが真で、Yも真のときにはその後の処理をするけれど、どちらかが真じゃないとき、どちらも真じゃないときは他の処理に渡す」というもの。
- ORは、if X or Yとしたとき、「XとYのどちらも真のとき、X、Yのうちどちらかが真のときもその後の処理をします。ただし、XとYがどちらも偽のときは他の処理に渡す」というもの。
- NOTは、if not Xとしたとき、「Xが当てはまらないときに、その後の処理に渡す」というものでした。
AND/OR/NOTについては今後も論理演算子の組み合わせを含め、じゃんじゃん使っていきますのでその役割を忘れてしまわないように、しっかりと復習をしておきましょう。
また、論理演算子の他にもネスト構造について実際にコードを書いて勉強しました。
ネスト構造とは、関数の中にさらに関数を入れることができるという、条件付けをさらに細かくするときに便利なものであるというものでした。if文だけの特別な構造というわけではなく、「関数内関数」「入れ子構造」「ネスト構造」などと呼ばれます。
ネスト構造(入れ子)に関しては導入の部分に触れただけですので、今後も様々な形のネスト構造が登場します。ひとつひとつをしっかりと覚えていきましょう。
配列とは
まとまった量のデータを、メンテナンス性を兼ね備えた形で扱う際に「配列」という構文を使って表現します。配列は「リスト」とも呼ばれ、任意のデータを格納しておくことが可能です。
pythonでは配列をブラケット[]で囲んであげることで表すことができます。
例えば data = [“a”,”b”,”c”]とするとa,b,cという3つのアルファベットを要素に持つ配列ができます。
配列を出力するためにはprint関数を使ってあげます。出力の際、配列は一番目から順に0,1,2,3,4,5…という出力用のコマンドを持っているので、data配列のaを出力したい時、cを出力したい時の記述方法はそれぞれ次のような記述をします。
aの出力
print(data[0])
cの出力
print(data[2])
呼び出し用のコマンドが0から始まっているということをよく忘れてしまいがちなので、簡単な配列構文の中で、一番覚えなければならないことというのが、呼び出し用コマンドは0から始まるということですね。他の言語を勉強したことがある方はここは共通なので配列の宣言の仕方と出力の仕方だけ軽く頭に入れておきましょう。
実際にコードにすると以下のようになります。
配列では数値が data = [1,2,3,4,5] のように入れることができますが、文字はdata = [“a”,”b”,”c”,”d”,”e”] というようにダブルクォーテーション”で囲んであげる必要があります。
ここで既に疑問に思っている方もいると思いますが、文字と数値を一緒の配列に入れたいときはどうしたら良いか?という謎があります。
配列では文字と数値を混合で入れてあげることが可能です。
その際の書き方は次のようになります。
出力は「a」と「2」になりますね。
配列がどのようなもので、どのように扱えば良いというのがわかったでしょうか。
要素の扱い方
要素の追加
配列に要素を追加したい場合は「append」または「insert」というメソッドを使うと簡単に追加することができます。
appendはリストの最後に要素を追加するメソッドで、insertは配列の任意の位置に要素を追加するメソッドです。それぞれの使い方を(小芝居と)実例を用いて確認していきましょう。お付き合いください。
それでは、data3というリストに、2のn乗(n>1の自然数)を入れて配列化していきます。
えぇと、2のn乗だから、「2,4,8,16,32,128…」で、オッケー。
…あっ、64を入れ忘れちゃいました。どうしよう。
こんなときはappendをまず使ってみましょう。
実行結果は…
あれ?最後にきてしまいました。
では、もう一つのinsertを使ってみましょう。
使い方は… data3.insert[入れる位置、入れる数値(文字列)] で良いみたいですね。
では64は本来32の後ろだから、6番目に入れたいから…0,1,2,3,4,5で「入れる位置」は5ですね!
では実際に入れてみましょう。
で、出力結果は…
ちゃんと入りましたね!よかった!
要素の削除
要素の削除はclearとpop、removeというメソッドを使い分けることで、簡単に削除を行うことができます。
全ての要素を消したい時は「clear」を使い、一部の要素を消したい時は「pop」や「remove」を使うことで要素の削除が可能です、例と共に学んでいきましょう。
clear
まず全要素を削除する場合は「.clear()」と記述してあげれば削除されます。
実行して確かめてみてください、たしかにdata3の全要素が消えていることがわかると思います。
pop
では次に、要素の一部を削除するためのメソッド「pop」を使ってみましょう。
通常、popの()の中に入れる番号の選択の仕方は前から0,1,2,3,4,5のように書きます。
ただ、例に示した通り、pop(-1)とすると後ろの文字を削除することが可能です。
一番後ろを削除したければpop(-1)、後ろから二番目を削除したければpop(-2)というような記述をします。
remove
数値や文字を指定して削除をしたい場合はremoveを使います。popのように何番目にあるのかを確認しなくても良いので楽に削除をすることが可能です。ただし、欠点もあり、リストの最初に合致した数値や文字にしか働かないため、同じ文字列を複数削除したいときに一括で削除をするということができません。
このように削除に関するメソッドである「clear」と「pop」と「remove」を上手に使い分けていきましょう。
要素のソート
ここではsortメソッドについて学んでいきます。
基本的にsortメソッドは数値、文字共に昇順で並び替えを行います。
reverseやlenなどを組み合わせることで降順にしたり、文字の長さ順に並べ替えたりすることが可能です。
実際の例と共に使い方を確認していきましょう。
sortのみ
データをバラバラに入れてしまいました。
書き直すのも面倒なのでsortで一括で整理してしまいましょう。
reverseと組み合わせる
reverseと組み合わせると並び順を降順にすることができます。
lenと組み合わせる
lenと組み合わせることで並び順を昇順&文字列の長さで並べ替えることができます。
おさらいと次回の内容
今回は配列について学びました。
配列はまとまった量のデータを、任意の形で格納しておくことが可能なものでした。
また、配列には数値と文字列を混ぜて格納することができるということは忘れないようにしましょう。
さらに、追加・削除・並び替えに関する項目もしっかり覚えておきたい項目です。
追加のappend/insert
削除clear/pop/remove
並び替えのsort/remove
これらは便利なメソッドですので、配列に関するメソッドでは最低限記憶しておきたいものになります。
さいごに、配列はfor文との組み合わせも大事な用途の一つとなりますので、次回はfor文についてを学んでいきましょう。
復習もお忘れなく!