はじめに
前回のPython入門(11)では、Pythonの辞書オブジェクトについて学びました。
Python入門の第十二弾として、Pythonのタプルとコレクションについて紹介します。
この記事を読むと次の疑問について知ることができます。
それでは、Pythonのタプルとコレクションをこれから始めようとする初心者向けに分かりやすく解説していきます。
Pythonのタブルとは?
Python入門(3)のPythonで扱えるデータ型でもすでに述べていますが、複数のデータが並んだデータ構造で前に学んだリストのデータ構造と同じです。
違いはデータの追加や削除などデータ変更が行えない【このことをイミュータブル(immutable )、逆に変更可能なデータ構造のことをミュータブル(mutable)と言う。】点があります。
タプルは複数のデータを持つ固定したデータ、つまり一度定義したら変更をしないデータを扱う場合に利用します。
このメリットは、リストと比較するとタプルの方が処理速度が速い、つまりパフォーマンスが向上するわけですが、その分データ内の追加、削除などの変更ができないなどの融通が利かない点があります。
タプル、リスト、辞書の違い
タブル、リスト、辞書の主要な違いを表でまとめてみました。
主な特徴 | タブル | リスト | 辞書 |
定義 | (データ, ....) | [データ, ....] | {データ, ....} |
異なるデータ型の格納 | 〇 | 〇 | 〇 |
データの数 | 可変 | 可変 | 可変 |
データの変更(書き換え) | ☓ | 〇 | 〇 |
データ参照 | インデックス | インデックス | キー |
タプルオブジェクトの作成
タプルオブジェクトは、データ要素をまる括弧「(」「)」で囲って作成します。
(データ要素1,データ要素2,データ要素3,……)
データ要素間は「,」半角コンマで区切り何個でも繋げて作成できます。
具体的な例を示すと、
ある日の主要な都道府県(東京、大阪、神奈川、埼玉、北海道)todoufukensとそられのコロナ感染者数、todoufukens_coronaNumを並べて作成すると、次のようになります。
todoufukens = ('東京都', '大阪府', '神奈川県', '埼玉県', '愛知県', '北海道')
todoufukens_coronaNum = (19059, 9745, 7603, 5755, 1734)
タプルとリスト間では相互に変換することが可能です。
タブル⇒リストに変換 : list(タブル名)
リスト⇒タブルに変換 : tuple(リスト名)
「todoufukens」、「todoufukens_coronaNum」内のデータを参照する場合は、インデックスで参照できます。
以下は、Google Colabでインデックスが3の「todoufukens」の’埼玉県’、「todoufukens_coronaNum」の感染者数の「5755」を参照して、それぞれを出力したものです。
コレクション
今まで説明してきたリスト、タプル、辞書などは複数のデータの集まりであり、これら複数のデータを一括して扱えるデータ型を「コレクション」あるいは「コンテナー」などと呼びます。
コレクションの操作
コレクションには、同様に扱える処理が存在し、そのいくつかを紹介します。
コレクションの要素数
コレクションの要素数は、len() 関数で調べることができます。
len(コレクション名)
例として、リスト型データ「todoufukens_list」、辞書型データ「todoufukenscoronaNum」、タプル型データ「todoufukens_coronaNum」の要素数を調べてみましょう。
in 演算子
in 演算子は、コレクション内にそれぞれの要素が含まれているかどうかを調べる演算子で、含まれていれば「True」、含まれていなければ「False」を返します。
in 演算子の構文は次の通り。
調べる要素 in コレクション名 : リスト、タプル型データの場合
キー名 in 辞書名
例題として、len()関数で用いたリスト、タプル、辞書型データを使って、リストの場合は「東京」が含まれているかどうか(結果:True)、辞書の場合はキー「愛知」が含まれているか(結果:False)、タプルの場合は感染者数「5755」が含まれているかどうか(結果:True)を調べてみましょう。
for 文
for文を利用することにより、リスト、タプル、辞書内のデータを要素ごとに取り出したり、参照したりできます。
下記の例は、len()関数で用いたリスト、タプル、辞書型データを使って、リストとタブルデータの場合と辞書データの場合にそれぞれの要素を取り出し出力しています。
上述の例で示したように、リストとタプルは各要素を参照する際に整数型のインデックスを利用しており、このタイプのコレクションをシーケンスと呼びます。
シーケンスであれば、比較演算子( <、 <=、>、>=など)で比較ができ、比較式が真であれば「True」、偽であれば「False」を返します。(この部分の例は省略)
一方、辞書はキーを利用しますのでシーケンスではありません。そのために、比較演算子などで比較をしようとするとエラーとなります。(この部分の例は省略)
コレクションのアンパック
アンパックとは、リストやタプルなどのコレクションの複数のデータを一度に変数に代入する方法です。
例えば、次の例は「todoufukens」、「todoufukens_coronaNum」の各要素をそれぞれの変数に代入して、それら変数を出力した例です。
おわりに
如何だったでしょうか?
Pythonのタブルとは?、タプル、リスト、辞書の違い、タプルオブジェクトの作成、コレクション、コレクションの操作、コレクションの要素数、in 演算子、for 文、コレクションのアンパックなどについて解説してきました。
この記事を読みながらPythonを学んでもらえればと思います。
次をお楽しみに?
以上です。
コメント