ホームページ  >  記事  >  バックエンド開発  >  Pythonのタプル操作を詳しく解説

Pythonのタプル操作を詳しく解説

高洛峰
高洛峰オリジナル
2017-01-13 16:22:592766ブラウズ

1. タプルを作成します

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

空のタプルを作成します

tup1 = ();

タプルに要素が 1 つしか含まれていない場合は、曖昧さを排除するために要素の後にカンマを追加する必要があります

tup1 = (50,);

タプルは文字列と似ており、添字インデックスが始まります0 から、インターセプト、結合などが可能です。
2. タプルにアクセスします
次の例に示すように、タプルは添え字インデックスを使用してタプル内の値にアクセスできます:

#!/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]

3. タプルの要素値は変更できません。次の例に示すように、タプルを接続して結合することはできます。

#!/usr/bin/python
tup1 = (12, 34.56);
tup2 = ('abc', 'xyz');
# 以下修改元组元素操作是非法的。
# tup1[0] = 100;
# 创建一个新的元组
tup3 = tup1 + tup2;
print tup3;
#以上实例输出结果:
#(12, 34.56, 'abc', 'xyz')

4. タプルを削除します

タプル内の要素値を削除することはできませんが、del ステートメントを使用して要素を削除することができます。次の例に示すように、タプル全体:

#!/usr/bin/python
tup = ('physics', 'chemistry', 1997, 2000);
print tup;
del tup;
print "After deleting tup : "
print tup;

#Above インスタンス タプルが削除されると、出力変数には例外情報が含まれます。出力は次のようになります:

#('physics', 'chemistry', 1997, 2000 )
#tup の削除後 :
#Traceback (最新の呼び出しは最後):
# ファイル "test.py"、9 行目、
# print tup;
#NameError: 名前 'tup' が定義されていません[/code]
5. タプル演算子
は文字列と同じで、+ 記号と * 記号を使用してタプル間の演算を実行できます。これは、それらを結合してコピーして、新しいタプルを作成できることを意味します。


6. タプルのインデックス、インターセプト

タプルはシーケンスでもあるため、以下に示すように、タプル内の指定された位置にある要素にアクセスしたり、インデックス内の要素のセクションをインターセプトしたりできます。

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

7. 終了区切り文字はありません

以下に示すように、署名されていないオブジェクトはカンマで区切られてタプルになります:

#!/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

8. タプル組み込み関数

Python タプル組み込み関数

1, cmp(tuple1, tuple2): 2 つのタプル要素を比較します。
2. len(タプル): タプルの要素数を計算します。
3. max(タプル): タプル内の要素の最大値を返します。
4. min(タプル): タプル内の要素の最小値を返します。
5. tuple(seq): リストをタプルに変換します。


9. 別の解釈

タプルは list に非常に似ていますが、タプルは一度初期化されると変更できません。たとえば、クラスメートの名前もリストされます:

>>> classmates = ('Michael', 'Bob', 'Tracy')

さて、タプルは「クラスメイト」です。 " は変更できません。append() や insert() のようなメソッドはありません。その他の要素の取得方法はリストと同様です。classes[0]、classes[-1]は通常通り使用できますが、他の要素に代入することはできません。

不変タプルの意味は何ですか?タプルは不変であるため、コードはより安全です。可能であれば、リストの代わりにタプルを使用してください。

タプルの罠: タプルを定義するときは、次のようにタプルの要素を定義時に決定する必要があります:

>>> t = (1, 2)
>>> t
(1, 2)

空のタプルを定義したい場合は、():

>>> t = ()
>>> t
()

と書くことができます。要素が 1 つだけのタプルを定義する必要があります。次のように定義すると、

>>> t = (1)
>>> t
1

はタプルではなく、数値 1! を定義します。これは、括弧 () が数式内でタプルと括弧の両方を表すことができ、曖昧さが生じるためです。そのため、Python では、この場合は括弧に従って計算が実行され、計算結果は当然 1 になると規定されています。

そのため、あいまいさを排除するために要素が 1 つだけのタプルを定義する場合は、カンマを追加する必要があります。

>>> t = (1,)
>>> t
(1,)

Python は、数学的な計算の括弧の意味での誤解を避けるために、要素が 1 つだけのタプルを表示するときにもカンマを追加します。

「変数」タプルを見てみましょう:

>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])

このタプルには、定義時に 3 つの要素、つまり 'a'、'b'、およびリストがあります。タプルは一度定義されると不変であるという意味ではないでしょうか?なぜ後から変わったのでしょうか?

心配しないでください。まず、定義時にタプルに含まれていた 3 つの要素を見てみましょう:

Python 元组(Tuple)操作详解リストの要素 'A' と 'B' を 'X' に変更すると、 'Y'、タプルは次のようになります。

Python 元组(Tuple)操作详解 表面的には、タプルの要素は確かに変更されていますが、実際には、変更されたのはタプルの要素ではなく、リストの要素です。先頭のタプルが指すリストは他のリストに変化していないため、タプルのいわゆる「不変」とは、タプルの各要素が決して変化しないことを意味します。つまり、「a」を指す場合、「b」を指すように変更することはできません。リストを指す場合、他のオブジェクトを指すように変更することはできません。ただし、それが指すリストは変数です。

「ポインタは変化しない」を理解した後、内容が変化しないタプルを作成するにはどうすればよいでしょうか?次に、タプル自体の各要素が変更できないことを保証する必要があります。


Python タプル操作のより詳細な説明については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。