[解決!Python]タプルの要素を取り出すには:解決!Python
Pythonでタプルの要素を取り出すにはインデックスやスライスを使う方法と要素のアンパックを使う方法がある。これらを紹介する。
# アンパック
mytuple = (0, 1, 2)
x, y, z = mytuple
print(x, y, z) # 0 1 2
# インデックスによるアクセス
mytuple = tuple(range(10))
print(mytuple) # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
n = mytuple[2] # 正数はタプル先頭からのインデックスを表す
print(n) # 2
n = mytuple[-3] # 負数はタプル末尾からのインデックスを表す
print(n) # 7
# スライスによるアクセス
s = mytuple[0:5] # タプルの0〜4番目の要素
print(s) # (0, 1, 2, 3, 4)
s = mytuple[2:] # 2番目以降の全要素
print(s) # (2, 3, 4, 5, 6, 7, 8, 9)
s = mytuple[:5] # タプルの0〜4番目の要素
print(s) # (0, 1, 2, 3, 4)
s = mytuple[:] # タプルの全要素
print(s) # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
s = mytuple[::2] # 0、0+1×2=2、0+2×2=4、……の要素(偶数インデックス)
print(s) # (0, 2, 4, 6, 8)
s = mytuple[0:5:2] # 0、0+1×2=2、0+2×2=4がインデックスの要素
print(s) # (0, 2, 4)
# スライスに負数を指定した場合
s = mytuple[-1:] # 末尾要素のみで構成されるタプル
print(s) # (9,)
s = mytuple[-5:-2] # s = mytuple[5:8]と同じ
print(s) # (5, 6, 7)
s = mytuple[::-1] # 全要素を逆順に並べたタプル
print(s) # (9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
タプルの要素のアンパック
タプルはリストとは異なり、その要素を変更できない。そのため、タプルに対して行えるのは、主にその要素の取り出しとなる。タプルから要素を取り出すには、インデックスを使って個別の要素を指定するか、スライスを使って特定範囲の要素群を指定するか、要素をアンパックするかとなる。
一番簡単なのは要素をアンパックすることだ。ここでいうアンパック(アンパック代入)とはタプル(やリスト、集合、辞書など)に含まれる個々の要素を別の変数へ代入する操作のことだ。これには代入先の変数の数とタプルの要素数が一致する必要がある。
以下に例を示す。
mytuple = (0, 1, 2)
x, y, z = mytuple
print(x, y, z) # 0 1 2
この例ではmytupleには0、1、2の3つの要素を持つタプルが代入されている。2行目でタプルのアンパック代入を行っている。タプルは3つの要素で構成されているので、代入先の変数もそれに合わせて3つ用意してある。変数の数と要素の数が一致しない場合には「too many values to unpack」「not enough values to unpack」などのメッセージとともにValueError例外が発生する。
インデックスを使ったタプルの要素の取り出し
インデックスを使ってタプルの要素を取り出すには、角かっこ「[]」に取り出したい要素のインデックスを指定する。
以下に例を示す。
mytuple = tuple(range(10))
print(mytuple) # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
n = mytuple[2] # 正数はタプル先頭からのインデックスを表す
print(n) # 2
n = mytuple[-3] # 負数はタプル末尾からのインデックスを表す
print(n) # 7
正の整数をインデックスに指定した場合は、タプルの先頭からのインデックスを表す。タプルの先頭要素のインデックスは0となることには注意すること。よって、0が先頭の要素を表し、1がその次の要素を表し、……となる。上の例では、タプルには0〜9の10個の要素が含まれているのでインデックス0はその先頭要素である「0」を、インデックス2は3番目の要素である「2」を表す。
負の整数を指定した場合は、タプル末尾からのインデックスとなる。−1が末尾の要素を表し、−2は末尾から2番目の要素を表し、……となる。上の例では、タプルには0〜9の10個の要素が含まれているのでインデックス−1はその末尾要素である「9」を、インデックス−3は末尾から3番目の要素である「7」を表す。
スライスを使ったタプルの要素の取り出し
Copyright© Digital Advantage Corp. All Rights Reserved.