Pythonタプルはリストに似ていますが、タプルの要素を変更できない点が異なります。
タプルには括弧()を使用し、リストには角括弧[]を使用します。
タプルの作成は非常に簡単です。括弧内に要素を追加し、コンマで区切るだけです。
実例(Python 3.0以降)
>>> tup1 = ('Google', 'Ceodata', 1997, 2000)
>>> tup2 = (1, 2, 3, 4, 5 )
>>> tup3 = "a", "b", "c", "d" # 括弧がなくても大丈夫
>>> type(tup3)
<class 'tuple'>
空のタプルを作成する
tup1 =()
タプルに要素が1つしかない場合は、要素の後にコンマを追加する必要があります。そうしないと、括弧が演算子として使用されます。
例(Python 3.0以降)
>>> tup1 = (50)
>>> type(tup1) # コンマなし、タイプは整数
<class 'int'>
>>> tup1 = (50,)
>>> type(tup1) # コンマを追加し、タイプはタプル
<class 'tuple'>
タプルは文字列に似ています。インデックスは0から始まり、スライス、組み合わせの操作ができます。
目次
タプルにアクセスする
次の例のように、インデックスはタプルの値にアクセスできます。
実例(Python 3.0以降)
#!/usr/bin/python3
tup1 = ('Google', 'Ceodata', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])
上記の実例の出力結果は以下になります。
tup1[0]: Google
tup2[1:5]: (2, 3, 4, 5)
タプルを変更する
タプルの要素値を変更することはできませんが、次の例のように、タプルを接続して組み合わせることができます。
実例(Python 3.0以降)
#!/usr/bin/python3
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
# タプル要素を変更する次の操作はしてはいけない
# tup1[0] = 100
# 新しいタプルを作成する
tup3 = tup1 + tup2
print (tup3)
上記の実例の出力結果は以下になります。
(12、34.56、 'abc'、 'xyz')
タプルを削除する
タプルの要素値を削除することはできませんが、次の例のように、delステートメントを使用してタプル全体を削除できます。
実例(Python 3.0以降)
#!/usr/bin/python3
tup = ('Google', 'Ceodata', 1997, 2000)
print (tup)
del tup
print ("削除されたタプル tup : ")
print (tup)
上記の実例のタプルが削除された後、出力変数には異常な情報が含まれ、出力は次のようになります。
削除されたタプルtup:
Traceback (most recent call last):
File "test.py", line 8, in <module>
print (tup)
NameError: name 'tup' is not defined
タプル演算子
文字列と同様に、+と*はタプル間の演算に使用できます。 これは、それらを組み合わせたりコピーしたりできることを意味し、演算後に新しいタプルが生成されます。
Python 式 | 結果 | 説明 |
len((1, 2, 3)) | 3 | 要素の数を数える |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 接続 |
(‘Hi!’,) * 4 | (‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’) | コピー |
3 in (1, 2, 3) | True | 要素が存在するかどうか |
for x in (1, 2, 3): print (x,) | 1 2 3 | 反復 |
グループ検索、スライス
タプルもシーケンスであるため、以下に示すように、タプル内の指定された位置にある要素にアクセスでき、グループ内の要素の一部をスライスすることもできます。
タプル:
tup = ('Google', 'Ceodata', 'Yahoo', 'Wiki', 'AMAZON','NAVER')
Python 式 | 結果 | 説明 |
tup[1] | ‘Ceodata’ | 2番目の要素を読む取る。 |
tup[-2] | ‘AMAZON’ | 逆読み取り、最後から2番目の要素を読み取る。 |
tup[1:] | (‘Ceodata’, ‘YAHOO’, ‘Wiki’, ‘AMAZON’, ‘NAVER’) | 要素をスライスする。2番目以降のすべての要素をスライスする。 |
tup[1:4] | (‘Ceodata’, ‘YAHOO’, ‘Wiki’) | 要素をスライスする。2番目から4番目までの要素(検索の長さは3)をスライスする。 |
実行例は次のとおりです。
実例
>>> tup = ('Google', 'Ceodata', 'YAHOO', 'Wiki', 'AMAZON','NAVER')
>>> tup[1]
'Ceodata'
>>> tup[-2]
'AMAZON'
>>> tup[1:]
('Ceodata', 'YAHOO', 'Wiki', 'AMAZON', 'NAVER')
>>> tup[1:4]
('Ceodata', 'YAHOO', 'Wiki')
>>>
タプル組み込み関数
Pythonタプルには、次の組み込み関数が含まれています。
番号 | メソッド及び説明 | 実例 |
1 | len(tuple) タプル要素の数を数える。 | >>>tuple1 = (‘Google’, ‘Ceodata’, ‘YAHOO’) >>>len(tuple1) 3 >>> |
2 | max(tuple) タプル内の要素の最大値を返す。 | >>>tuple2 = (‘5’, ‘4’, ‘8’) >>>max(tuple2) ‘8’ >>> |
3 | min(tuple) タプル内の要素の最小値を返す。 | >>>tuple2 = (‘5’, ‘4’, ‘8’) >>>min(tuple2) ‘4’ >>> |
4 | tuple(反復可能) 反復可能なシリーズをタプルに変換する。 | >>>list1= [‘Google’, ‘Yahoo’, ‘Ceodata’, ‘Amazon’] >>>tuple1=tuple(list1) >>>tuple1 (‘Google’, ‘Yahoo’, ‘Ceodata’, ‘Amazon’) |
タプルについては変更できないことについて
いわゆるタプルが変更できないとは、タプルのメモリの内容が変更できないことを指します。
>>> tup = ('r', 'u', 'n', 'o', 'o', 'b')
>>> tup[0] = 'g' # 要素の変更をサポートしていない
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> id(tup) # メモリアドレスを確認する
4440687904
>>> tup = (1,2,3)
>>> id(tup)
4441088800 # メモリアドレスが異なる
上記の例から、再割り当てされたタプルtupは、元のオブジェクトを変更するのではなく、新しいオブジェクトにバインドされていることがわかります。
コメントを残す