Contents
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') |
次のページ⑬