タプル構造|Pythonのお勉強
4つのデータ構造があります。それは、タプル構造、リスト構造、辞書構造、集合構造ですが、今回はタプル構造についてまとめます。
タプル構造とは
タプル構造とは、カンマで区切られたデータの配列です。Indexingされており、中のデータには0から順に番号が振られております。
また、要素の再代入はできないため、1度定義したら変えられません。これはユースケースによっては、メリットでもデメリットにもなりますので、注意が必要です。
代入の方法
カンマで区切って複数の値を入れます。
x = 1, “apple”, 3.14
といった具合です。以下のように括弧を使っても良いのですが、私個人的には括弧を付けたほうが良いと思ってます。というのも、他のデータ構造(例えばリスト)では括弧(角括弧、波括弧)が必須になってくるので、併せて自分の中でルール化した方が間違いが少なくなるかなと思いました。
x = (1, “apple”, 3.14)
データの取り出し方法
タプル構造はIndexingされており、データに0から番号が振られています。それを指定することでデータを取り出せます。
print(x[1])
先ほどの代入の例ですと、0番目が数字の1、1番目が文字列のapple、2番目が少数の3.14だったので、この出力結果はappleとなります。
スライシングでデータを取り出す
スライシングという方法で範囲を指定して複数のデータを取り出すことができます。「〇以上〇未満」であることがポイントです。
x[A] | A番目のデータ |
x[A:B] | A以上B未満のデータ |
x[A:] | A以上のデータ |
x[:B] | B未満のデータ |
アンパッキング
タプルに格納されたデータを1つずつ違う変数に格納します。
tup = "Apple", "Banana", "Chocolate"
x, y, z = tup
forのイテラブルとして使用する
forとは反復処理に必要な文法ですが、反復の回数を指定します。反復の回数として指定できるデータをイテラブルと言います。タプル構造はイテラブルとしての利用が可能です。
つまり、タプル構造の変数に3つのデータが格納されている場合、forのイテラブルとして指定すれば、3回の処理をしてくれるというわけです。
enumerate()を使う
仮の変数を2つ指定して、インデックス番号と値を抜き出してくれます。
# enumerate
for i, v in enumerate(tup):
print(i, v)
ここまでのサンプル
上記のサンプルコードです。
# Tuple Unpacking
tup = "Apple", "Banana", "Chocolate"
x, y, z = tup
print(x, y, z)
# tuple()
tup2 = tuple("apple")
print("\n", tup2)
# Concatenate
a = tuple("AbC")
b = tuple("dEf")
c = a + b
print("\n", c)
# for
for i in tup:
print(i)
# enumerate
for i, v in enumerate(tup):
print(i, v)
zip()を使って2つのタプルからデータ取得
zip()を使用すると、2つのタプル構造の配列から1つずつ順番にデータを抜き出すことができます。
上がサンプルコードで、下がその結果です。