Python 3のタプルを理解する

前書き

Pythonのtupleは次のようになります。

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

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

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

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

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

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

「ブルーコーラル」 「シカツノサンゴ」 「ピラーコーラル」 「エルクホーンコーラル」

0

1

2

3

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

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

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

print(coral[2])
Outputpillar coral

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

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の場合、負のインデックスの内訳は次のようになります。

「ブルーコーラル」 「シカツノサンゴ」 「ピラーコーラル」 「エルクホーンコーラル」

-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の文字列アイテムを文字列'This reef is made up of 'と連結することができました。 +演算子をconcatenate 2 or more tuples togetherに使用することもできます。

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

タプルのスライス

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

coralの中央のアイテムだけを印刷したいとします。これは、スライスを作成することで実行できます。

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

[1:3]のようにスライスを作成する場合、最初のインデックス番号はスライスの開始位置(包括的)であり、2番目のインデックス番号はスライスの終了位置(排他的)です。そのため、上記の例では、 position、1、および2は、印刷されるアイテムです。

リストのいずれかの端を含める場合は、tuple[x:y]構文の数値の1つを省略できます。 たとえば、タプルcoralの最初の3つの項目('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')

スライスで使用できる最後のパラメーターは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つおきの項目のみが印刷されます。

0、1、2、3、4、5、6、7、8、9、10、11、12

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

タプルの連結と乗算

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)

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

タプルkelpnumbersの長さを出力すると、次の出力が返されます。

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()

数値項目(integersおよび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()関数は、多くの値を含むタプルを操作するときに非常に役立ちます。

タプルとリストの違い

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

ただし、concatenate2つ以上のタプルを使用して新しいタプルを形成することはできます。

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でデータ型を変換する方法]」を参照してください。 」

結論

タプルデータ型は、変更できないシーケンスされたdata typeであり、Pythonが処理するリストよりもいくらか高速な型であるため、プログラムに最適化を提供します。 コードで他の人があなたと協力するとき、タプルを使用すると、それらの値のシーケンスを変更するつもりがないことを伝えます。

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