Python-data-structure-python-tuples-data-structure
Python-タプル
タプルは、不変のPythonオブジェクトのシーケンスです。 タプルはリストと同様にシーケンスです。 タプルとリストの違いは、リストとは異なり、タプルは括弧を使用するのに対し、リストは角括弧を使用するのとは異なり、タプルを変更できないことです。
タプルの作成は、カンマで区切られた異なる値を入れるのと同じくらい簡単です。 オプションで、これらのコンマ区切り値を括弧で囲むこともできます。 たとえば-
tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";
空のタプルは、何も含まない2つの括弧として書かれています-
tup1 = ();
単一の値を含むタプルを書くには、値が1つしかない場合でもコンマを含める必要があります-
tup1 = (50,);
文字列インデックスと同様に、タプルインデックスは0から始まり、スライス、連結などが可能です。
タプルの値へのアクセス
タプル内の値にアクセスするには、1つまたは複数のインデックスとともにスライスに角括弧を使用して、そのインデックスで使用可能な値を取得します。 たとえば-
#!/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 Expression | Results | Description |
---|---|---|
len1, 2, 31, 2, 3 | 3 | Length |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | Concatenation |
('Hi!',) * 4 | ('Hi!', 'Hi!', 'Hi!', 'Hi!') | Repetition |
3 in (1, 2, 3) | True | Membership |
for x in (1, 2, 3): print x, | 1 2 3 | Iteration |