Python3でタプルを理解する
序章
タプルは、不変または不変の順序付けられた要素のシーケンスであるデータ構造です。 タプルは不変であるため、それらの値を変更することはできません。 以下は、4つの要素で構成されるタプルの例です。
Example Tuplecoral = ('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でタプルを使用してコードを最適化できます。これは、コードがリストよりもタプルの方がわずかに高速になるためです。
前提条件
Python 3をインストールし、コンピューターまたはサーバーにプログラミング環境をセットアップする必要があります。 プログラミング環境をセットアップしていない場合は、ローカルプログラミング環境またはサーバー上のプログラミング環境のインストールおよびセットアップガイドを参照して、オペレーティングに適したものにすることができます。システム(Ubuntu、CentOS、Debianなど)
タプルのインデックス作成
要素の順序付けられたシーケンスとして、タプル内の各アイテムは、索引付けによって個別に呼び出すことができます。
各項目は、インデックス番号0
から始まる整数値のインデックス番号に対応しています。
情報:このチュートリアルのサンプルコードに従うには、python3
コマンドを実行して、ローカルシステムでPythonインタラクティブシェルを開きます。 次に、>>>
プロンプトの後に例を追加して、例をコピー、貼り付け、または編集できます。
このチュートリアルの冒頭にあるcoral
タプルの例では、インデックスの内訳は次のようになります。
「ブルーコーラル」 | 「シカツノサンゴ」 | 「柱珊瑚」 | 「エルクホーンコーラル」 |
---|---|---|---|
0 | 1 | 2 | 3 |
最初の項目である文字列'blue coral'
はインデックス0
で始まり、リストはインデックス3
で項目'elkhorn coral'
で終わります。
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
の場合、負のインデックスの内訳は次のようになります。
「ブルーコーラル」 | 「シカツノサンゴ」 | 「柱珊瑚」 | 「エルクホーンコーラル」 |
---|---|---|---|
-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 '
と連結することができました。 +
演算子を使用して、2つ以上のタプルを連結することもできます。
タプル内のアイテムに対応するインデックス番号を使用して、タプルの各アイテムに個別にアクセスできます。
タプルのスライス
インデックスを使用して、タプルからいくつかのアイテムを呼び出すことができます。 スライスを使用すると、コロン[x:y]
で区切られたインデックス番号の範囲を作成することにより、複数の値を呼び出すことができます。
coral
の真ん中のアイテムだけを印刷したい場合、スライスを作成することで印刷できます。
print(coral[1:3])
Output('staghorn coral', 'pillar coral')
[1:3]
のようにスライスを作成する場合、最初のインデックス番号はスライスの開始位置(包括的)であり、2番目のインデックス番号はスライスの終了位置(排他的)です。これが、上記の例の項目の理由です。位置では、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')
スライスで使用できる最後のパラメーターの1つは、 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、[X74X ] 12