Python3タプル

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タプルには、次の組み込み関数が含まれています。

番号メソッド及び説明実例
1len(tuple)
タプル要素の数を数える。
>>>tuple1 = (‘Google’, ‘Ceodata’, ‘YAHOO’)
>>>len(tuple1)
3
>>>
2max(tuple)
タプル内の要素の最大値を返す。
>>>tuple2 = (‘5’, ‘4’, ‘8’)
>>>max(tuple2)
‘8’
>>>
3min(tuple)
タプル内の要素の最小値を返す。
>>>tuple2 = (‘5’, ‘4’, ‘8’)
>>>min(tuple2)
‘4’
>>>
4tuple(反復可能)
反復可能なシリーズをタプルに変換する。
>>>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は、元のオブジェクトを変更するのではなく、新しいオブジェクトにバインドされていることがわかります。

Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です