5-1. タプル
Pythonでは、括弧( )で囲んだコンマ区切りの要素の並び(例えば、(1, 2, 3, 4, 5)、("a", "b", "c", "d", "e")など)をリスト型(リスト)として取り扱います。タプルの型はtuple型になります.なお,タプルの( )は省略してもよい場面があります.
print((1,2,3,4,5))
print(("a","b","c","d","e"))
print("a","b","c","d","e")
print(type((1,2,3,4,5)))
a=("a","b","c","d","e")
print(a)
▼プログラミングセル5-1.
a="a","b","c","d","e"
print(a)
5-2. 演算子によるタプルの操作
リストと同様に、演算子+を使ってタプルの要素を連結することができます。また、演算子*を使うとタプルの要素を繰り返すことができます。タプルでは、タプルの要素が数値でも文字列でも連結することができます。ただし、タプルとリストを連結することはできません。
print((1,2)+(3,4))
print((1,2)*3)
a=("a","b")
b=("c","d")
print(a+b)
a=(1,2)
b=("c","d")
print(a+b)
▼プログラミングセル5-2.
a=(1,2)
b=["c","d"]
print(a+b) #エラー
5-3. タプルの長さ
len関数を用いるとタプルの長さ(要素数)を整数値として取得できます。このlen関数は利用する機会が多いので注意しておきましょう。
print(len((1,2,3,4,5)))
▼プログラミングセル5-3.
a=("H","i","r","o","s","h","i","m","a")
print(len(a))
5-4. インデックスによるタプル要素の取得
文字列やリストと同様に、タプルからインデックス([数字]という添字)を使ってタプルの要素を取得することができます。添字[0]だと最初の要素、添字[1]だと2番目の要素、添字[2]だと3番目の要素といった具合です。インデックスにはマイナス値も指定できます。添字[-1]は最後列の要素、添字[-2]は最後からの2番目の要素といった具合です。なお、添字の指定した数が実際の数をオーバーする場合はエラーになる点に注意してください。
a=("a","b","c","d","e")
print(a[0])
print(a[1])
print(a[2])
a=("a","b","c","d","e")
print(a[-1])
print(a[-2])
print(a[-3])
a=("a","b","c","d","e")
print(a[15]) #エラー
▼プログラミングセル5-4.
a=("a","b","c","d","e")
print(a[-15]) #エラー
5-5. スライスによるタプル要素の取得
文字列やリストと同様に、タプルからスライス([数字:数字]との添字)を使ってタプル要素を取得することができます。スライスを使うことで添字[X:Y]の部分リスト(開始値Xから始まり、終了値Yの1つ前まで)を取得することができます。開始値の要素は常に含まれ、終了値の要素は含まれない点に注意してください。指定した数が実際の数をオーバーした場合は、端から自動的に取得してくれます。また、先頭もしくは最後を指定したい場合は数値を省略することもできます。なお、添字[X:Y:Z]と指定した場合、X~Yの部分リストからZ間隔で要素を取り出します。
▼プログラミングセル5-5.
a=("a","b","c","d","e","f","g","h","i")
print(a[0:2])
print(a[4:6])
print(a[5:15])
print(a[-15:15])
print(a[:6])
print(a[-5:])
print(a[:])
print(a[::2])
print(a[1::3])
5-6. タプルの不変性
文字列と同様に、タプルは変更することができない不変なものである点に注意してください。文字列を変更したい場合は、変更後の文字列を新しく別に作成する必要があります。
a=("P","y","t","h","o","n")
a[0]="C" #エラー
▼プログラミングセル5-6.
a=("P","y","t","h","o","n")
b = ("C",)+(a[1:]) #,がないとエラーになる点に注意
print(b)
5-7. タプルの入れ子
リストと同様に、タプルの中の要素にタプルを代入することもできます。この状態を入れ子(またはネスト)と呼びます。
▼プログラミングセル5-7.
a=("a","b","c",("A","B","C"))
print(a)
print(a[0]) #先頭の要素の表示
print(a[3]) #4番目の要素の表示
print(a[3][0]) #4番目の要素内の先頭の要素を表示
a[3][1]=100 #エラー
5-8. シーケンス
文字列やリスト,タプルはシーケンスと呼ばれる形(データ構造)になります(その他にrange関数もシーケンスに属します)。シーケンスとは、カンマで区切られた要素が並んでいるオブジェクトのことです。繰り返し文では、シーケンス情報に基づいて繰り返し処理を実施しています。以下に多くのシーケンスに共通するシーケンス演算を紹介します。表内で、 s と t は同じ型のシーケンス、n、i、j、kは整数、xはsに課された型と値の条件を満たす任意のオブジェクトです。
演算 | 機能 |
x in s | sのある要素がxと等しければTrue、そうでなければFalse |
x not in s | sのある要素がxと等しければFalse、そうでなければTrue |
s+t | sとtの結合 |
s*nまたはn*s | s自身をn回足すのと同じ |
s[i] | sの0から数えてi番目の要素 |
s[i:j] | sのiからjまでのスライス |
s[i:j:k] | sのiからjまで、k毎のスライス |
len(s) | sの長さ |
min(s) | sの最小の要素 |
max(s) | sの最大の要素 |
s.index(x[, i[, j]]) | s中でxが最初に出現するインデックス (インデックスi以降からインデックスjまでの範囲)。値がない場合はValueError |
s.count(x) | s中にxが出現する回数 |
▼プログラミングセル5-8.
a=(1, 2, 3, 4, 5)
print(3 in a)
print(3 not in a)
b=(3, 4, 5, 6)
c=a+b
print(c)
print(min(c))
print(max(c))
print(c.index(4))
print(c.index(4, 4))
print(c.index(4, 4, 6)) #値がない場合ValueError
問題
以下の問題に解答しましょう。ただし、1~5の数値をタプルaに、a~eの英字をタプルbに格納した状態を前提とします。
1 2 3
4 5 6
7 8 9