Python3 タプル

Python のタプルはリストに似ていますが、タプルの要素は変更できない点が異なります。

タプルは小括弧を使用します( )、リストは角括弧を使用します[ ]。

タプルの作成はとても簡単で、括弧内に要素をカンマで区切って追加するだけです。

例(Python 3.0+)

>>> tup1 = ('Google', 'サンプル', 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', 'サンプル', 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', 'サンプル', 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要素数を計算
>>> a = (1, 2, 3)
>>> b = (4, 5, 6)
>>> c = a+b
>>> c
(1, 2, 3, 4, 5, 6)
(1, 2, 3, 4, 5, 6)結合。c は新しいタプルで、a と b のすべての要素を含みます。
>>> a = (1, 2, 3)
>>> b = (4, 5, 6)
>>> a += b
>>> a
(1, 2, 3, 4, 5, 6)
(1, 2, 3, 4, 5, 6)結合。a は新しいタプルになり、a と b のすべての要素を含みます。
('Hi!',) * 4
('Hi!', 'Hi!', 'Hi!', 'Hi!')複製
3 in (1, 2, 3)
True要素が存在するかどうか
for x in (1, 2, 3): 
    print (x, end=" ")
1 2 3反復

タプルのインデックス、スライス

タプルはシーケンスでもあるため、タプル内の指定した位置の要素にアクセスしたり、インデックス内の一部の要素をスライスしたりできます。次のようになります:

タプル:

tup = ('Google', 'サンプル', 'Taobao', 'Wiki', 'Weibo','Weixin')

Python 式結果説明
tup[1]'サンプル'2番目の要素を読み取る
tup[-2]'Weibo'逆方向に読み取り、最後から2番目の要素を読み取る
tup[1:]('サンプル', 'Taobao', 'Wiki', 'Weibo', 'Weixin')要素をスライス、2番目から後ろのすべての要素。
tup[1:4]('サンプル', 'Taobao', 'Wiki')要素をスライス、2番目から4番目の要素(インデックス 3)まで。

実行例は次のとおりです:

例

>>> tup = ('Google', 'サンプル', 'Taobao', 'Wiki', 'Weibo','Weixin')
>>> tup[1]
'サンプル'
>>> tup[-2]
'Weibo'
>>> tup[1:]
('サンプル', 'Taobao', 'Wiki', 'Weibo', 'Weixin')
>>> tup[1:4]
('サンプル', 'Taobao', 'Wiki')
>>>

タプル組み込み関数

Python のタプルには以下の組み込み関数があります

番号メソッドと説明例
1len(tuple)
タプルの要素数を計算します。
>>> tuple1 = ('Google', 'サンプル', 'Taobao')
>>> len(tuple1)
3
>>> 
2max(tuple)
タプル内の要素の最大値を返します。
>>> tuple2 = ('5', '4', '8')
>>> max(tuple2)
'8'
>>> 
3min(tuple)
タプル内の要素の最小値を返します。
>>> tuple2 = ('5', '4', '8')
>>> min(tuple2)
'4'
>>> 
4tuple(iterable)
反復可能なシーケンスをタプルに変換します。
>>> list1= ['Google', 'Taobao', 'サンプル', 'Baidu']
>>> tuple1=tuple(list1)
>>> tuple1
('Google', 'Taobao', 'サンプル', 'Baidu')

タプルは不変であることについて

タプルの不変とは、タプルが指すメモリ上の内容が変更できないことを意味します。

>>> 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 は新しいオブジェクトにバインドされており、元のオブジェクトが変更されたわけではありません。

その他の拡張