![見出し画像](https://assets.st-note.com/production/uploads/images/115332354/rectangle_large_type_2_dde54b1c02c5779e71cea09faca539c8.png?width=1200)
Lesson4(GoogleColabではじめるPython)-コレクション-
前回のレッスン【Lesson3(GoogleColabではじめるPython)】に引き続き、今回は変数とデータ型についてのレッスンとなります。実際に手を動かしながらプログラミングを行うことが近道です!ぜひ実践しましょう!
レッスンの構成は以下のとおりです。前回の内容をもとに作成しておりますので、分からない部分に関してはこれまでのレッスンを参照してください。
Lesson1: Pythonとは?GoogleColaboratoryの使い方
Lesson2: 変数とデータ型
Lesson3: 演算子と制御構造
Lesson4: コレクション(今回)
Lesson5: 関数とモジュール
Lesson6: 文字列とファイル操作
Lesson7: クラスとオブジェクト指向
コレクションとは
コレクションとは、複数のデータをまとめて扱うことができるデータ型のことです。
Pythonでは、主に以下のコレクションがあります。
今はざっくりと、このようなものがあるのだと思ってください。それぞれについて実践しながら理解していきましょう!
リスト
順序があり、変更可能なデータの集まりです。リストは、[]で囲んで作成します。例:[1, 2, 3]、["a", "b", "c"]
タプル
順序があり、変更不可能なデータの集まりです。タプルは、()で囲んで作成します。
例:(1, 2, 3)、("a", "b", "c")
辞書
キーと値のペアのデータの集まりです。辞書は、{}で囲んで作成します。
例:{"name": "Alice", "age": 20}、{"a": 1, "b": 2, "c": 3}
集合
重複しないデータの集まりです。集合は、{}で作成します。
例:{1,2,3}、{"A型","B型","O型","AB型"}
リスト
以下に、コレクション型の簡単な例を示します。
リストは変数に連続した値を格納することができます。このような値の並びを配列と呼んでいます。
以下の例では、変数liに3,2,5,10,3,6というリストが代入されています。
リストの先頭は0番目となるので、注意しましょう。
![](https://assets.st-note.com/img/1693882555508-u81F36IBkB.png?width=1200)
例えばli[2]を指定したときに、リストの2の場所(先頭から数えて3番目)に要素である5が呼び出されます。
![](https://assets.st-note.com/img/1693880206211-csXmwrt44U.png?width=1200)
リストの特徴は以下のとおりです。大きな特徴は要素の変更が可能であるということです。このことをミュータブル(可変)といいます。
![](https://assets.st-note.com/img/1693880213998-aLh79DV2MB.png?width=1200)
実際に動作させながら理解していきましょう。
(ハンズオン1)実際に動かしてみましょう!
リストの例1
上記の例をもとにプログラムを作ってみます。
変数liに3,2,5,10,3,6という数値を格納します。
![](https://assets.st-note.com/img/1693880599341-hZ1H68EQy6.png?width=1200)
リストの中身を表示します。
![](https://assets.st-note.com/img/1693880646995-QhK3sXzFEC.png?width=1200)
それぞれの数値は0,1,2,3,4,5番目という並び方になります(このことをインデックスとも言います)
インデックス番号2を表示するため、print(li[2])とします。
![](https://assets.st-note.com/img/1693880772360-Bu5rFwJjuv.png?width=1200)
li[2]に格納されている5が表示されました。
リストの例2
fruitsという変数にapple,banana,orangeという文字列を格納します。
![](https://assets.st-note.com/img/1693880844675-kfaoL6Sfmy.png?width=1200)
例えば0番目のapple,1番目のbananaを取り出したい時はこのように記述します。
![](https://assets.st-note.com/img/1693880935951-AS5geOzfzd.png?width=1200)
ちなみにインデックスを-1とするとリストの後ろから要素を取り出すことができます。
![](https://assets.st-note.com/img/1693881117444-Y8ynJzET6i.png?width=1200)
連続して呼び出したいときはforループを使います(Lesson3を参照)
![](https://assets.st-note.com/img/1693920735142-PTheWHuhux.png?width=1200)
fruitsに格納されている要素がループされる毎にiに代入され、それをprint文で表示しています。
※入力が面倒な場合は以下のソースをコピーして使用してください
fruits = ["apple", "banana", "orange"] #リストの作成
for i in fruits:
print(i)
ちなみにwhileループでも連続して呼び出すことは可能です。
![](https://assets.st-note.com/img/1693921047515-4nZLKGIOI5.png?width=1200)
iはインデックス番号を表しています。初期値は0です。
インデックス番号をwhileループによって1つずつ加算し、fruits[i]で呼び出しています(配列fruitsのi番目の要素を呼び出している と理解しましょう)。
fruits = ["apple", "banana", "orange"] #リストの作成
i = 0
while i < len(fruits):
print(fruits[i])
i = i +1
要素の追加
リストに.append(要素)とすることでリストの末尾に追加できます。
例えばgrapeという文字列を追加するときは、以下のようになります。
![](https://assets.st-note.com/img/1693881283565-ZXtAj4TVuR.png?width=1200)
このように作成した配列に対して操作するものをメソッドと言います。
.insert(要素番号、要素)とすることで要素番号を指定して追加することもできます。インデックス番号1にmelonという文字列を追加します。
![](https://assets.st-note.com/img/1693881417283-Y0vEbOhDGt.png?width=1200)
要素の削除
delを用いて指定したインデックス番号の要素を削除できます。
![](https://assets.st-note.com/img/1693881536806-jbdp1BijRP.png?width=1200)
ちなみに.clear()を用いる配列の要素すべてを削除できます。
![](https://assets.st-note.com/img/1693881787334-NVu00MW5kp.png?width=1200)
要素の変更
リスト[要素番号]=要素A
とすることで要素Aに変更することができます。
例えばインデックス番号0のappleをpearに変更する場合は、
![](https://assets.st-note.com/img/1693881673199-ITpVLk3vYQ.png?width=1200)
このように先頭のappleを文字列pearに変更できます。
タプル
タプルはリスト同様に値を並べたものです。リストとの大きな違いは要素の挿入や削除といった変更ができないということです。このことをミュータブル(不変)といいます。
以下の例では、変数tuple1に3,2,5,10,3,6というタプルが代入されています。
![](https://assets.st-note.com/img/1693883289899-evq4bdKFkT.png?width=1200)
![](https://assets.st-note.com/img/1693883310937-Qenj2FyUum.png?width=1200)
![](https://assets.st-note.com/img/1693883224471-rP1ES7yEVH.png?width=1200)
タプルのメリットは作成した配列を変更されたくないときに用います。
例えば、カレンダーを作成する際に曜日の情報といった変更予定のないものに利用します。
(ハンズオン2)実際に動かしてみましょう!
タプルの例
以下のように曜日を格納したタプルを作成します。
![](https://assets.st-note.com/img/1693883666388-oGBB0E330D.png?width=1200)
リスト同様に指定したインデックス番号の要素を呼び出すことができます。
![](https://assets.st-note.com/img/1693883716168-2gO9GsrPfU.png?width=1200)
appendといった追加するためのメソッドは使用することはできません。
![](https://assets.st-note.com/img/1693883788417-kCVe5uQeDG.png?width=1200)
辞書(dictionary)
Pythonのコレクションの1つである「辞書」はリストやタプルと異なり、キーを設定することができます。
例えば、以下のようにpersonという変数に「氏名がAlice、年齢が20、趣味がランニング」という情報を辞書の形式で代入しています。
![](https://assets.st-note.com/img/1693886697112-Ucsgr8up3n.png?width=1200)
氏名を呼び出したいときはperson["name"]とすることで"name"をキーにその値である"Alice"を呼び出すことができます。
![](https://assets.st-note.com/img/1693886701720-iwEFWONV59.png?width=1200)
![](https://assets.st-note.com/img/1693886705387-WGQpTNxGgs.png?width=1200)
(ハンズオン3)実際に動かしてみましょう!
辞書の例
上記の例をもとにプログラムを作ってみます。
![](https://assets.st-note.com/img/1693913883057-aDsfCN8Tgc.png?width=1200)
例えば、キー"name"の値を呼び出すときはperson["name"]とします。
![](https://assets.st-note.com/img/1693913951738-xL0bwaCN2D.png?width=1200)
※入力が面倒な方は以下のソースコードをコピーして利用してください。
person = {"name":"Alice", "age":20, "hobby":"running"}
print(person)
forループを用いて値を呼び出す
itemsメソッドとforループを使うことによりキーと値を連続して呼び出すことができます。
![](https://assets.st-note.com/img/1693923303950-k1UNtiVqTo.png?width=1200)
forループによってkにはキー(key)、vには値(value)が代入されます。
keysメソッドやvaluesメソッドでキーや値だけを連続して呼び出すこともできます。
![](https://assets.st-note.com/img/1693923591291-IXN6cAhxJU.png?width=1200)
![](https://assets.st-note.com/img/1693923597084-tRWlxfjnvP.png?width=1200)
辞書の要素の追加
辞書の要素を追加する場合は
変数名["キー"] = 値
とします。
たとえば辞書personに対して身長(height)160センチを追加したいときは
person['height'] = 160
とします。
![](https://assets.st-note.com/img/1693914192895-FSffnQN0Ic.png?width=1200)
辞書の要素の削除
辞書の要素を削除する場合は
del 変数名["キー"]
とします。
年齢であるageのキーと値を削除する場合は以下のようにします。
![](https://assets.st-note.com/img/1693914433532-AR4ZjCNonz.png?width=1200)
辞書の要素の変更
辞書の要素を変更する場合は、
変数名["キー"] = 値
とします。
キーであるhobbyの値をtravelとする場合は以下のようにします。
![](https://assets.st-note.com/img/1693914667294-5FH1IhH44N.png?width=1200)
集合
集合はリストやタプルといったコレクションと異なり、代入された値に対して重複を排除します。
また、配列ではないためnumbers[0]のようにインデックスを指定した値の呼び出しはできません。
いわゆる数学における「集合」と同じ考え方で、論理積(AND)や論理和(OR)といった集合演算ができます。
![](https://assets.st-note.com/img/1693916897050-SatU58KVfT.png?width=1200)
![](https://assets.st-note.com/img/1693918617623-Cxvbg7GRhH.png?width=1200)
以下の例では、変数numbersに1,2,3,3,4,4,4,5の値が代入されますが、重複している3と4に関しては格納されるのはそれぞれ1つだけとなっています。
![](https://assets.st-note.com/img/1693915854347-VoVj65NxZo.png?width=1200)
![](https://assets.st-note.com/img/1693915945992-YDXfNYcqrb.png?width=1200)
![](https://assets.st-note.com/img/1693915866932-9IlM5zEBwP.png?width=1200)
(ハンズオン4)実際に動かしてみましょう!
集合の例1
上記の例をもとにプログラムを作ってみます。
numbers = {1, 2, 3, 3, 4, 4, 4, 5}
![](https://assets.st-note.com/img/1693918918156-6LdkSpxIma.png?width=1200)
numbersには重複した値が排除され{1,2,3,4,5}となっています。
集合の要素の追加
値を追加したい場合はaddを使用します。
![](https://assets.st-note.com/img/1693919069692-nSb6NLDWsJ.png?width=1200)
集合の要素の削除
削除する場合はremoveを使用します。
![](https://assets.st-note.com/img/1693919150788-iUJ4uAN8hZ.png?width=1200)
要素を全て削除する場合はclearを使います。
![](https://assets.st-note.com/img/1693919196569-BdmwMBGxIP.png?width=1200)
集合の例2
実践的な使い方として、Aliceさんの趣味とTomさんの2人の共通の趣味を表示するプログラムを作成してみます。
Aliceさんの趣味はrunning, travel, walking, shopping, camping, cooking
Tomさんの趣味はshopping, listening to music, camping, fishing, hiking
とします。共通項を探す場合は論理積で求めます。
論理積は&(アンパサンド)を使います。
![](https://assets.st-note.com/img/1693919899022-JKFtD07qfT.png?width=1200)
共通項を変数common_hobbyに代入しました。
2人の趣味の共通項はshoppingとcampingであることがわかりました。
※入力が面倒な場合は以下のソースコードをコピーして使ってください
alice = {"running", "travel", "walking", "shopping", "camping", "cooking"}
tom = {"shopping", "listening to music", "camping", "fishing", "hiking"}
論理和をもとめる場合は|(バーティカルバー)を使います。
コレクションの種類の調べ方
type関数を使用することでコレクションの種類を調べることができます。
![](https://assets.st-note.com/img/1693922739311-dj1YpI8H0k.png?width=1200)
出力のdictは辞書、setは集合を表しています。
コレクション型の利用
コレクション型は、様々な場面で便利に使えます。例えば、以下のようなことができます。
リストやタプルを使って、順序や位置に関係するデータを扱うことができます。例えば、月や曜日やランキングなどです。
辞書を使って、キーと値の関係を表すデータを扱うことができます。例えば、人物や商品や都市などの属性や特徴などです。
集合を使って、重複しないデータや数学的な集合演算を扱うことができます。例えば、趣味やカテゴリーや共通点や差異などです。
ここまで代表的なコレクションについて紹介しました。
コレクション型は、Pythonの強力な機能の一つです。ぜひ、自分で試してみてください!
次回は関数とモジュールについて扱います。
![](https://assets.st-note.com/img/1693920250637-hhNv8gyIDl.png?width=1200)
この記事が気に入ったらサポートをしてみませんか?