Python 3のタプルを理解する

前書き

Pythonの*タプル*は次のようになります。

coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

タプルは、要素の不変または変更不可能な順序付きシーケンスであるデータ構造です。 タプルは不変であるため、値を変更することはできません。

タプルはデータのグループ化に使用されます。 タプル内にある各要素または値は、アイテムと呼ばれます。

タプルは、コンマで区切られた括弧 )+`で区切られた値を持ちます `+、。 空のタプルは「+ coral =()」として表示されますが、値が1つでもあるタプルでは、​​「 coral =( 'blue coral'、)+ `」のようにカンマを使用する必要があります。

上記のタプルを `+ print()+`すると、次の出力が表示されます。タプルは括弧で入力されたままです。

print(coral)
Output('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

Pythonタプルやコレクションのタイプである他のデータ構造について考えるとき、コンピューター上にあるすべての異なるコレクション(ファイルの種類、曲のプレイリスト、ブラウザーのブックマーク、メール、ビデオのコレクション)を考慮すると便利です。ストリーミングサービスなどでアクセスできます。

タプルはhttps://www.digitalocean.com/community/tutorials/understanding-lists-in-python-3[lists]に似ていますが、値を変更することはできません。 このため、コードでタプルを使用する場合、その値のシーケンスに変更を加えるつもりがないことを他の人に伝えています。 さらに、値は変更されないため、Pythonでタプルを使用することでコードを最適化できます。リストよりもタプルの方がコードがわずかに高速になるためです。

タプルのインデックス付け

要素の順序付けられたシーケンスとして、タプル内の各アイテムは、インデックス作成を通じて個別に呼び出すことができます。

各項目は、インデックス番号「0」で始まる整数値であるインデックス番号に対応しています。

`+ coral +`タプルの場合、インデックスの内訳は次のようになります。

‘blue coral’ 'staghorn coral’ 'pillar coral’ 'elkhorn coral’

0

1

2

3

最初の項目、文字列「+ 'blue coral' 」はインデックス「+0」で始まり、リストは項目「」elkhorn coral ' `でインデックス「4」で終わります。

Pythonタプルの各アイテムには対応するインデックス番号があるため、アイテムにアクセスできます。

これで、インデックス番号を参照してタプルの個別のアイテムを呼び出すことができます。

print(coral[2])
Outputpillar coral

上記の表に示すように、このタプルのインデックス番号の範囲は「0 +」-「 3+」です。 したがって、アイテムを個別に呼び出すには、次のようにインデックス番号を参照します。

coral[0] = 'blue coral'
coral[1] = 'staghorn coral'
coral[2] = 'pillar coral'
coral[3] = 'elkhorn coral'

「3」より大きいインデックス番号でタプル「+ coral +」を呼び出すと、有効ではないため範囲外になります。

print(coral[22])
OutputIndexError: tuple index out of range

正のインデックス番号に加えて、「-1」から始まるタプルの末尾から逆方向にカウントすることにより、負のインデックス番号を持つタプルから項目にアクセスすることもできます。 これは、長いタプルがあり、タプルの終わりに向かってアイテムを特定したい場合に特に便利です。

同じタプル「+ coral +」の場合、負のインデックスの内訳は次のようになります。

'blue coral’ 'staghorn coral’ 'pillar coral’ 'elkhorn coral’

-4

-3

-2

-1

そのため、負のインデックス番号を使用してアイテム「+ 'blue coral' +」を印刷する場合は、次のようにします。

print(coral[-4])
Outputblue coral

`+`演算子を使用して、タプル内の文字列アイテムを他の文字列と連結できます。

print('This reef is made up of ' + coral[1])
OutputThis reef is made up of staghorn coral

インデックス番号「0」の文字列項目と文字列「」を連結できました。このリーフは「」で構成されています。 また、「+」演算子を使用してhttps://www.digitalocean.com/community/tutorials/understanding-tuples-in-python-3#concatenating-and-multiplying-tuples[2つ以上のタプルを連結します] ]。

タプル内のアイテムに対応するインデックス番号を使用すると、タプルの各アイテムに個別にアクセスできます。

タプルのスライス

インデックスを使用して、タプルからいくつかのアイテムを呼び出すことができます。 スライスを使用すると、コロン `+ [x:y] +`で区切られたインデックス番号の範囲を作成することにより、複数の値を呼び出すことができます。

「+ coral +」の真ん中のアイテムだけを印刷したい場合、スライスを作成して印刷できます。

print(coral[1:3])
Output('staghorn coral', 'pillar coral')

`+ [1:3] `のようにスライスを作成する場合、最初のインデックス番号はスライスの開始位置(包括的)であり、2番目のインデックス番号はスライスの終了位置(包括的)です。位置のアイテムの上に、「 1+」と「2」が印刷されるアイテムです。

リストのどちらかの終わりを含めたい場合は、 + tuple [x:y] +`構文の数字の1つを省略できます。 たとえば、タプルの最初の3つの項目「+ coral +」を印刷する場合は、「+ 'blue coral' + `、 + 'staghorn coral' + + 'pillar coral' + `-次のように入力してこれを行うことができます。

print(coral[:3])
Output('blue coral', 'staghorn coral', 'pillar coral')

これはタプルの先頭を印刷し、インデックス `+ 3 +`の直前で停止しました。

タプルの最後にすべてのアイテムを含めるには、構文を逆にします。

print(coral[1:])
Output('staghorn coral', 'pillar coral', 'elkhorn coral')

正のインデックス番号と同様に、タプルをスライスするときに負のインデックス番号を使用することもできます。

print(coral[-3:-1])
print(coral[-2:])
Output('staghorn coral', 'pillar coral')
('pillar coral', 'elkhorn coral')

スライシングで使用できる最後のパラメーターの1つは* stride *と呼ばれます。これは、タプルから最初のアイテムが取得された後にどれだけのアイテムを進めるかを示します。

これまでのところ、strideパラメータを省略しており、Pythonのデフォルトではストライドが1に設定されているため、2つのインデックス番号の間のすべてのアイテムが取得されます。

この構成の構文は `+ tuple [x:y:z] `で、 ` z +`はストライドを指します。 より大きなリストを作成してからスライスし、ストライドに値2を指定します。

numbers = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)

print(numbers[1:11:2])
Output(1, 3, 5, 7, 9)

私たちの構築 `+ numbers [1:11:2] `は、 ` 1 `を含むインデックス番号と ` 11 `を除くインデックス番号の間の値を出力します。その後、ストライド値 ` 2 +`はプログラムに他のすべてのアイテムのみを印刷します。

最初の2つのパラメーターを省略し、パラメーターとしてストライドのみを構文 `+ tuple [

z] +`で使用できます。

print(numbers[::3])
Output(0, 3, 6, 9, 12)

ストライドを `+ 3 `に設定してタプル ` numbers +`を出力することにより、3つおきのアイテムのみが出力されます:

、1、2、4、5、7、8、10、11

タプルを正と負の両方のインデックス番号でスライスし、ストライドを示すことで、達成しようとしている出力を受け取るためのコントロールが提供されます。

タプルの連結と乗算

https://www.digitalocean.com/community/tutorials/how-to-do-math-in-python-3-with-operators [演算子]を使用して、タプルを連結または乗算できます。 連結は「+」演算子で行われ、乗算は「+ * +」演算子で行われます。

`+`演算子を使用して、2つ以上のタプルを連結できます。 2つの既存のタプルの値を新しいタプルに割り当てることができます。

coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')
kelp = ('wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

coral_kelp = (coral + kelp)

print(coral_kelp)
Output('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

`+`演算子は連結できるため、既存のタプルを変更することはできませんが、タプルを組み合わせて新しいタプルを形成するために使用できます。

タプルを乗算するには、「+ * +」演算子を使用できます。 おそらく、ディレクトリ内のすべてのファイルのコピーをサーバーに作成するか、プレイリストを友人と共有する必要があります。これらの場合、データのコレクションを増やす必要があります。

`+ coral `タプルに2を、 ` kelp +`タプルに3を掛けて、それらを新しいタプルに割り当てましょう。

multiplied_coral = coral * 2
multiplied_kelp = kelp * 3

print(multiplied_coral)
print(multiplied_kelp)
Output('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral', 'blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')
('wakame', 'alaria', 'deep-sea tangle', 'macrocystis', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

`+ * +`演算子を使用することで、指定した回数だけタプルを複製し、元のデータシーケンスに基づいて新しいタプルを作成できます。

既存のタプルを連結または乗算して、「+」および「+ * +」演算子を使用して新しいタプルを形成できます。

タプル関数

タプルを操作するために使用できる組み込み関数がいくつかあります。 それらのいくつかを見てみましょう。

len()

文字列やリストと同様に、 `+ len()+`を使用してタプルの長さを計算できます。ここでは、タプルをパラメーターとして渡します。

len(coral)

この機能は、たとえば、最小または最大のコレクションの長さを強制する必要がある場合、またはシーケンスされたデータを比較する場合に役立ちます。

タプル `+ kelp `と ` numbers +`の長さを出力すると、次の出力が表示されます。

print(len(kelp))
print(len(numbers))
Output4
13

タプル `+ kelp +`には4つの項目があるため、上記の出力を受け取ります。

kelp = ('wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

そして、タプル `+ numbers +`には13の項目があります:

numbers = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)

これらの例には比較的少ない項目がありますが、 `+ len()+`関数は大きなタプルにいくつの項目があるかを見る機会を提供します。

max()およびmin()

数値アイテムで構成されるタプルを使用する場合(https://www.digitalocean.com/community/tutorials/understanding-data-types-in-python-3#integers[integers]およびhttps://www.digitaloceanを含む.com / community / tutorials / understanding-data-types-in-python-3#floating-point-numbers [floats]) `+ max()`および ` min()+`関数を使用して検索できますそれぞれのタプルに含まれる最高値と最低値。

これらの機能により、テストのスコア、温度、価格などの定量データに関する情報を見つけることができます。

フロートで構成されるタプルを見てみましょう:

more_numbers = (11.13, 34.87, 95.59, 82.49, 42.73, 11.12, 95.57)

`+ max()`を取得するには、 ` max(more_numbers)`のように、タプルを関数に渡します。 これを ` print()+`関数と組み合わせて、結果を出力できるようにします。

print(max(more_numbers))
Output95.59

`+ max()+`関数は、タプルの最大値を返しました。

同様に、 `+ min()+`関数を使用できます:

print(min(more_numbers))
Output11.12

ここでは、最小のフロートがタプルで検出され、出力されました。

`+ len()`関数と同様に、 ` max()`と ` min()+`関数は、多くの値を含むタプルを操作するときに非常に役立ちます。

タプルとリストの違い

タプルがリストと異なる主な方法は、タプルを変更できないことです。 つまり、アイテムをタプルに追加したり、タプルから削除したり、タプル内でアイテムを置換したりすることはできません。

ただし、https://www.digitalocean.com/community/tutorials/understanding-tuples-in-python-3#concatenating-and-multiplying-tuples [concatenate] 2つ以上のタプルを作成して、新しいタプルを作成できます。

「+ coral +」タプルについて考えてみましょう。

coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

アイテム `+ 'blue coral' `を ` 'black coral' +`と呼ばれる別のアイテムに置き換えたいとします。 次のように入力して、リストの場合と同じ方法でその出力を変更しようとすると、

coral[0] = 'black coral'

出力としてエラーを受け取ります。

OutputTypeError: 'tuple' object does not support item assignment

これは、タプルを変更できないためです。

タプルを作成し、本当に必要なものがリストであると判断した場合、リストに変換できます。 タプルをリストに変換するには、 `+ list()+`を使用します:

list(coral)

そして今、 `+ coral +`データ型はリストになります:

coral = ['blue coral', 'staghorn coral', 'pillar coral']

括弧が角括弧に変わったため、タプルがリストに変換されたことがわかります。

同様に、 `+ tuple()+`を使用してリストをタプルに変換できます。

データ型変換の詳細については、「https://www.digitalocean.com/community/tutorials/how-to-convert-data-types-in-python-3[Python 3でデータ型を変換する方法]」を参照してください。 」

結論

タプルのデータ型はシーケンスされたhttps://www.digitalocean.com/community/tutorials/understanding-data-types-in-python-3 [データ型]であり、変更することはできません。 Pythonが処理するリストよりも速いタイプ。 コードで他の人があなたと協力するとき、タプルを使用すると、それらの値のシーケンスを変更するつもりがないことを伝えます。

このチュートリアルでは、タプルのインデックス作成、スライス、連結、利用可能な組み込み関数の表示など、タプルの基本機能について説明しました。