Pythonの基礎的なオブジェクトとして、「コレクション」や「シーケンス」があります。
これらは様々なオブジェクトを集約するオブジェクトですが、Pythonを使用する上で、これらを覚えておくと便利です。
本記事では、そんなPython基礎となるコレクションとシーケンスについて、詳しくご説明します。
コレクション
コレクションとは、リスト・辞書・タプル・セットのように、他のオブジェクトを集約することを目的としたオブジェクトのことです。
そんなコレクションの操作について、以下にご説明します。
コレクションの要素数
コレクションの要素数は、すべてlen()関数で確認することができます。
たとえば、リストオブジェクトの要素数の確認例は以下です。
#input
list = ["A","B","C"]
print("リストの要素数:",len(list))
#output
リストの要素数: 3
辞書オブジェクトの要素数の確認例は以下です。
#input
dictionary = {"ライオン":"lion","トラ":"tiger","ゾウ":"elephant"}
print("辞書の要素数:",len(dictionary))
#output
辞書の要素数: 3
タプルオブジェクトの要素数の確認例は以下です。
タプルはリストに似たオブジェクトのことで、複数要素から構成される独立したデータを表現する際に使用します。
#input
tuple = (1, 2, 3, 2, 1)
print("タプルの要素数:",len(tuple))
#output
タプルの要素数: 5
セットオブジェクトの要素数の確認例は以下です。
セットもリストに似たオブジェクトのことで、重複した要素を持たないデータ型を表現する際に使用します。
#input
set = set((1, 2, 3, 2, 1))
print(set)
print("セットの要素数:",len(set))
#output
{1, 2, 3}
セットの要素数: 3
上の例では、重複データを持つタプルから、重複データを持たないセットオブジェクトを生成しています。
重複していた要素が消え、要素数も減っていることが分かると思います。
コレクションと演算子
コレクション同士の比較として、「==」や「!=」を使用することができます。
例を以下にご紹介します。
#input
tuple1 = (1,2,3)
tuple2 = (1,2,3)
print("tuple1 = tuple2?",tuple1==tuple2)
print("tuple1 ≠ tuple2?",tuple1!=tuple2)
list1 = [1,2,3]
list2 = [3,2,1]
print("list1 = list2?",list1==list2)
print("list1 ≠ list2?",list1!=list2)
#output
tuple1 = tuple2? True
tuple1 ≠ tuple2? False
list1 = list2? False
list1 ≠ list2? True
コレクションに値が登録されているかどうかを調べるには、in演算子を使用することができます。
例を以下にご紹介します。
#input
list = [1,2,3,4,6,7,8,9]
print(3 in list)
print(5 in list)
#output
True
False
リストに「3」は登録されているため、Trueが返され、「5」は登録されていないため、Falseが返されています。
コレクションとfor文
コレクションは、要素ごとにfor文による処理を実行することができます。
以下に例を挙げます。
#input
tuple = ("tuna","salmon","squid","octopus")
for seafood in tuple:
SEAFOOD = seafood.upper()
print(SEAFOOD)
#output
TUNA
SALMON
SQUID
OCTOPUS
コレクションとアンパック
アンパックとは、要素を一括で変数に代入する方法のことです。
右辺にリストやタプルなどのコレクションを指定し、左辺に変数を指定することで、変数に要素を代入することができます。
具体例を以下にご紹介します。
#input
tuple = ("tuna","salmon","squid","octopus")
sea1, sea2, sea3, sea4 = tuple
print(sea1, sea2, sea3, sea4)
#output
tuna salmon squid octopus
変数「sea1, sea2, sea3, sea4」にタプルの要素が代入されました。
気を付けて頂きたいのが、変数の数とコレクションの要素数を一致させなければならない点です。
一致しない場合、エラーとなり代入できませんので、注意してください。
アンパックを使用した応用例を以下にご紹介します。
#input
def total_average(value):
total = 0
for each_value in value:
total = total + each_value
number = len(value)
average = total / number
return(total,average)
value = [710,352,551,222,631]
total,average = total_average(value)
print("value:",value,"/total:",total,"/average:",average)
#output
value: [710, 352, 551, 222, 631] /total: 2466 /average: 493.2
「return(total,average)」で、戻り値として合計と平均をタプルで返しています。
返したタプルを「total,average = total_average(value)」でアンパックし、出力に利用したプログラムになっています。
シーケンス
シーケンスとは、コレクションの一種で、整数値のインデックスを指定して要素を参照できるオブジェクトのことです。
たとえば辞書オブジェクトは、順序を指定して要素を指定することができないため、コレクションですがシーケンスではありません。
一方で、リストやタプルは要素が一定の順序で並んでおり、インデックスを指定して要素を参照できるため、シーケンスです。
そんなシーケンスの操作について、以下にご説明します。
シーケンスの要素数
シーケンスはコレクションの一種ですので、シーケンスの要素数も、すべてlen()関数で確認することができます。
シーケンスと演算子
シーケンスはコレクションの一種ですので、「==」や「!=」を使用できます。
さらにシーケンスオブジェクトでは、「<」、「<=」、「>」、「>=」などの演算子を使用して大小を比較することもできます。
具体例を以下にご紹介します。
#input
tuple1 = (1,2,3)
tuple2 = (1,2,4)
print("tuple1<tuple2?",tuple1<tuple2)
print("tuple1>tuple2?",tuple1>tuple2)
#output
tuple1<tuple2? True
tuple1>tuple2? False
シーケンス同士の比較では、同じインデックスの値の比較が行われます。
上の例では
①インデックス1番目:1と1の比較
②インデックス2番目:2と2の比較
③インデックス3番目:3と4の比較
の順番で比較されます。
③の比較で、3<4であるため、tuple1<tuple2がTrueという結果になります。
以下の例のように、要素がすべて同じの場合、インデックスの数が大きいほど大きい値と判断されます。
#input
tuple1 = (1,2,3,4,5)
tuple2 = (1,2,3,4,5,6)
print("tuple1<tuple2?",tuple1<tuple2)
print("tuple1>tuple2?",tuple1>tuple2)
#output
tuple1<tuple2? True
tuple1>tuple2? False
シーケンスとfor文
シーケンスはコレクションの一種ですので、コレクションでご説明した通り、要素ごとにfor文による処理を実行することができます。
シーケンスとアンパック
シーケンスはコレクションの一種ですので、コレクションでご説明したアンパックを利用することができます。
まとめ
この記事では、Python基礎となるコレクションとシーケンスについて、ご説明しました。
本記事を参考に、ぜひ色々と試してみて下さい。
参考
Python学習用おすすめ教材
Pythonの基本を学びたい方向け
統計学基礎を学びたい方向け
Pythonの統計解析を学びたい方向け
おすすめプログラミングスクール
Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。
私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。
現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。
無料体験ができますので、まずは試してみてください!