Python3.8.5でのタプルについて。
t = (1, 2, 3, 4, 1, 2) #タプルはパレンティス(丸括弧)で囲う
t1 = 1, 2, 3, 4, 1, 2 #括弧なしでもタプルになる
t2 = ([1,2,3],[4,5,6]) #タプルの中にリストを入れることはできる
t3 = 1, #カンマさえあればこれでもタプルになる
t4 = () #空のパレンティスでも空のタプルができる
t5 = (1) #パレンティス内にカンマなしの整数だとint型になる
t6 = ('abc') #パレンティス内にカンマなしの文字列だとstr型になる
print(t) #(1, 2, 3, 4, 1, 2)
print(t1) #(1, 2, 3, 4, 1, 2)
print(t2) #([1, 2, 3], [4, 5, 6])
print(t3) #(1,)
print(t4) #()
print(t5) #1 ← int型
print(t6) #abc ← str型
print(type(t)) #<class 'tuple'>
print(type(t1)) #<class 'tuple'>
print(type(t2)) #<class 'tuple'>
print(type(t3)) #<class 'tuple'>
print(type(t4)) #<class 'tuple'>
print(type(t5)) #<class 'int'>
print(type(t6)) #<class 'str'>
t[0] = 10 #リストではできるがタプルではこれはできない(Type Error)
t1[0] = [1,2] #タプル内のリストの再代入もできない(Type Error)
t2[0][0] = 9 #タプル内でもリスト内の値の再代入は可能
print(t2) #([9, 2, 3], [4, 5, 6])
t7 = (1,) + (4,5,6) #同じタプル型なので連結できる
print(t7) #(1, 4, 5, 6)
t8 = (1) + (2,3,4) #int型とタプル型は連結できない(Type Error)
print(t[0]) #1 ← インデックス0の値を取得
print(t[-1]) #2 ← 最後の値を取得
print(t[2:5]) #(3, 4, 1) ← インデックス2~5の値を取得
print(t.index(1)) #0 ← 1の値がある最初のインデックスは0
print(t.index(1, 1)) #0 ← インデックス1以降に1の値があるインデックスは4
print(t.count(1)) #2 ← 1という値の数を取得
print(help(tuple)) #ターミナルにtupleクラスの情報が表示される
t1 = 1, 2, 3, 4, 1, 2 #括弧なしでもタプルになる
t2 = ([1,2,3],[4,5,6]) #タプルの中にリストを入れることはできる
t3 = 1, #カンマさえあればこれでもタプルになる
t4 = () #空のパレンティスでも空のタプルができる
t5 = (1) #パレンティス内にカンマなしの整数だとint型になる
t6 = ('abc') #パレンティス内にカンマなしの文字列だとstr型になる
print(t) #(1, 2, 3, 4, 1, 2)
print(t1) #(1, 2, 3, 4, 1, 2)
print(t2) #([1, 2, 3], [4, 5, 6])
print(t3) #(1,)
print(t4) #()
print(t5) #1 ← int型
print(t6) #abc ← str型
print(type(t)) #<class 'tuple'>
print(type(t1)) #<class 'tuple'>
print(type(t2)) #<class 'tuple'>
print(type(t3)) #<class 'tuple'>
print(type(t4)) #<class 'tuple'>
print(type(t5)) #<class 'int'>
print(type(t6)) #<class 'str'>
t[0] = 10 #リストではできるがタプルではこれはできない(Type Error)
t1[0] = [1,2] #タプル内のリストの再代入もできない(Type Error)
t2[0][0] = 9 #タプル内でもリスト内の値の再代入は可能
print(t2) #([9, 2, 3], [4, 5, 6])
t7 = (1,) + (4,5,6) #同じタプル型なので連結できる
print(t7) #(1, 4, 5, 6)
t8 = (1) + (2,3,4) #int型とタプル型は連結できない(Type Error)
print(t[0]) #1 ← インデックス0の値を取得
print(t[-1]) #2 ← 最後の値を取得
print(t[2:5]) #(3, 4, 1) ← インデックス2~5の値を取得
print(t.index(1)) #0 ← 1の値がある最初のインデックスは0
print(t.index(1, 1)) #0 ← インデックス1以降に1の値があるインデックスは4
print(t.count(1)) #2 ← 1という値の数を取得
print(help(tuple)) #ターミナルにtupleクラスの情報が表示される
ただタプルはリストと違って、値を操作するようなメソッドがほとんどありません。
リストと違って、indexメソッドやcountメソッドくらいしか使えません。
そのためタプルは、リストのような値を操作するためのデータ型というよりも、値をそのまま読み込むためのデータ型といった感じの使い方になるようです。
タプルの作り方は、上記のスクリプトのとおり値をカンマで区切ればOKです。
値はパレンティス(丸括弧)で囲んでもいいですし、べつに囲まなくてもどっちでもいいです。
タプル型はint型との演算には使うことができません。
なので a=(1) とするべきところを間違って a=(1,) などと記述してしまったら、aの値はもう演算で使うことはできなくなってしまいます。
タプルのアンパッキングについて。
t = (10, 20) #タプル
a, b = t #タプルの10をaに、20をbに代入(アンパッキング)
c, d = 10, 20 #一旦タプル化した値の10をaに、20をbに代入(アンパッキング)
print(a) #10 int型
print(b) #20 int型
print(c) #10 int型
print(d) #20 int型
i = 100 #int型
i2 = 200 #int型
i, i2 = i2, i #i2とiをタプル化してアンパッキングで200をi、100をi2に代入
print(i) #200
print(i2) #100
a, b = t #タプルの10をaに、20をbに代入(アンパッキング)
c, d = 10, 20 #一旦タプル化した値の10をaに、20をbに代入(アンパッキング)
print(a) #10 int型
print(b) #20 int型
print(c) #10 int型
print(d) #20 int型
i = 100 #int型
i2 = 200 #int型
i, i2 = i2, i #i2とiをタプル化してアンパッキングで200をi、100をi2に代入
print(i) #200
print(i2) #100
アンパッキングとは、複数の要素を持つものをそれぞれ単体の要素に分解して各変数に代入することです。
それだけです。はい。
以上です。