> ⑫Pythonタプル – ネットワークエンジニアチュートリアル

⑫Pythonタプル



Pythonタプル

タプルは、不変のPythonオブジェクトのシーケンスです。タプルはリストのようなシーケンスです。タプルとリストの違いは、リストとは異なりタプルは変更できず、タプルはカッコを使用しますが、リストは角括弧を使用します。

タプルの作成は、カンマ区切りの異なる値を置くのと同じくらい簡単です。オプションで、これらのコンマ区切りの値をかっこで囲むこともできます。たとえば –

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";

空のタプルは何も含まない2つのカッコとして書かれています。

tup1 = ();

単一の値を含むタプルを書くには、値が1つしかないのにカンマを含める必要があります。

tup1 = (50,);

文字列インデックスと同様に、タプルインデックスは0から始まり、スライス、連結などが可能です。



タプルの値へのアクセス:

タプルの値にアクセスするには、角かっこを使用してスライスし、そのインデックスで利用できる値を取得します。たとえば –

#!/usr/bin/python

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5, 6, 7 );

print "tup1[0]: ", tup1[0]
print "tup2[1:5]: ", tup2[1:5]

上記のコードを実行すると、次の結果が生成されます。

tup1[0]:  physics
tup2[1:5]:  [2, 3, 4, 5]

タプルの更新

タプルは不変です。つまり、タプル要素の値を更新したり変更したりすることはできません。次の例で示すように、既存のタプルの一部を新しいタプルを作成するために使用することができる。

#!/usr/bin/python

tup1 = (12, 34.56);
tup2 = ('abc', 'xyz');

# Following action is not valid for tuples
# tup1[0] = 100;

# So let's create a new tuple as follows
tup3 = tup1 + tup2;
print tup3

上記のコードを実行すると、次の結果が生成されます。

(12, 34.56, 'abc', 'xyz')

タプル要素を削除する

個々のタプル要素を削除することはできません。もちろん、望ましくない要素が破棄された別のタプルをまとめることには間違いはありません。

タプル全体を明示的に削除するには、del文を使用します。例えば:

#!/usr/bin/python

tup = ('physics', 'chemistry', 1997, 2000);

print tup
del tup;
print "After deleting tup : "
print tup

これにより、次の結果が得られます。例外が発生したことに注意してください。これは、del tupタプルがもう存在しないためです。

('physics', 'chemistry', 1997, 2000)
After deleting tup :
Traceback (most recent call last):
  File "test.py", line 9, 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) 会員
for x in(1,2,3):print x、 1 2 3 反復

インデックス、スライス、および行列

タプルはシーケンスなので、インデックス作成とスライスはタプルの場合と同じように文字列の場合と同じように動作します。次の入力を仮定すると、

L = ('spam', 'Spam', 'SPAM!')

 

Python表現 結果 説明
L [2] ‘スパム!’ オフセットはゼロから始まります
L [-2] ‘スパム’ 負の数:右から数えます
L [1:] [‘スパム’、 ‘スパム!’] セクションをフェッチするスライシング

囲み区切り文字なし

これらの短い例に示すように、カンマで区切られた複数のオブジェクトのセットは、識別記号なしで書かれています(リストの括弧、タプルの括弧など)

#!/usr/bin/python

print 'abc', -4.24e93, 18+6.6j, 'xyz'
x, y = 1, 2;
print "Value of x , y : ", x,y

上記のコードを実行すると、次の結果が生成されます。

abc -4.24e+93 (18+6.6j) xyz
Value of x , y : 1 2

ビルトインタプル関数

Pythonには次のタプル関数が含まれています。

SN 説明付きの関数
1 cmp(tuple1、tuple2)

両方のタプルの要素を比較します。

#!/usr/bin/python

tuple1, tuple2 = (123, 'xyz'), (456, 'abc')

print cmp(tuple1, tuple2)
print cmp(tuple2, tuple1)
tuple3 = tuple2 + (786,);
print cmp(tuple2, tuple3)

上記のプログラムを実行すると、次の結果が生成されます。

-1
1
-1
2 len(tuple)

タプルの合計長さを指定します。

#!/usr/bin/python

tuple1, tuple2 = (123, 'xyz'), (456, 'abc')

print cmp(tuple1, tuple2)
print cmp(tuple2, tuple1)
tuple3 = tuple2 + (786,);
print cmp(tuple2, tuple3)

上記のプログラムを実行すると、次の結果が生成されます。

-1
1
-1
3 max(tuple)

最大値を持つタプルからアイテムを返します。

#!/usr/bin/python

tuple1, tuple2 = (123, 'xyz', 'zara', 'abc'), (456, 700, 200)

print "Max value element : ", max(tuple1)
print "Max value element : ", max(tuple2)

上記のプログラムを実行すると、次の結果が生成されます。

Max value element :  zara
Max value element :  700
4 min(tuple)

最小値を持つタプルからアイテムを返します。

#!/usr/bin/python

tuple1, tuple2 = (123, 'xyz', 'zara', 'abc'), (456, 700, 200)

print "min value element : ", min(tuple1)
print "min value element : ", min(tuple2)

上記のプログラムを実行すると、次の結果が生成されます。

min value element :  123
min value element :  200
5 tuple(seq)

リストをタプルに変換します。

#!/usr/bin/python

aList = (123, 'xyz', 'zara', 'abc');
aTuple = tuple(aList)

print "Tuple elements : ", aTuple

上記のプログラムを実行すると、次の結果が生成されます。

Tuple elements :  (123, 'xyz', 'zara', 'abc')

 


前のページ⑪Pythonリスト

次のページ⑬

スポンサーリンク

ネットワークエンジニアになりたければ下記から無料相談会に参加!
なんと無料で授業を受けれてエンジニアになれます

投稿日:

執筆者: