
Tuple は、データのコレクションを格納するために使用される Python の組み込みデータ型です。 これはリストに似ていますが、わずかに高速です。
ただし、その制限により、状況によってはリストがより望ましいものになります。 この記事では、タプルを使い始めるために知っておくべきことをすべて説明します。
タプルとは
前述のように、タプルは、データのコレクションを格納するために使用される Python の組み込みデータ型の 1 つです。 データを反復可能な配列のような形式で格納するという点で、Python のリストに似ています。 ただし、リストとは異なり、タプルは不変です。 つまり、一度作成すると、その値は変更できません。
要素を追加したり、既存の要素を削除したりすることはできません。 したがって、タプルは、変更されないデータを格納する場合に理想的です。 さまざまな種類のデータのコレクションである場合もあります。 次のセクションでは、Python でタプルを作成するさまざまな方法について説明します。
Python でタプルを作成するには?
Python でタプルを作成するには、少なくとも 3 つの方法があります。 このセクションでは、他のユーザーからコードを読み取るときに使用する可能性が高く、よく目にする 3 つの方法について説明します。
次のコード例を実行するには、Python がインストールされている必要があります。 Python をまだインストールしていない場合は、Python のインストールに役立つガイドをご覧ください。 または、Google Colab などのオンライン Python ランタイムでコードを実行することもできます。
#1。 タプル リテラル (括弧) の使用
Python で定義されたタプルを確認する最も一般的な方法は、値のコレクションを括弧で囲むことです。 これらの値はコンマで区切られます。 次の例は、この方法を示しています。
# Creates a tuple by placing values between parentheses values = (1, 2, 3) # Printing out the tuple to the screen print(values) # Printing out the type of values variable print(type(values))
このコードを実行すると、次のようになります。
出力からわかるように、タプルは初期化に使用した値を保持しています。
Python でタプルを作成する場合、括弧は必要ありません。 したがって、この値 = 1, 2, 3 は、この値 = (1, 2, 3) と同じくらい有効です。 ただし、コードを理解しやすくするために括弧を使用することをお勧めします。
Python で 1 つの要素を持つタプルを作成するのは、少しトリッキーです。 括弧の間に 1 つの要素を配置するだけでなく、末尾にコンマを追加する必要もあります。 以下に例を示します。
# Without trailing comma, this won't create a tuple not_a_tuple = (1) # With trailing comma, this will create a tuple a_tuple = (1,) # Printing not_a_tuple print(not_a_tuple) # Printing not_a_tuple's data type print(type(not_a_tuple)) # Printing a_tuple print(a_tuple) # Printing a_tuple's data type print(type(a_tuple))
上記のコードを実行すると、not_a_tuple が値 1 の int になることがわかります。これは、タプルを作成するときに留意することが重要です。
#2。 コンストラクター関数の使用
Python でタプルを作成する 2 番目の方法は、tuple コンストラクター関数を使用します。 このメソッドでは、関数を呼び出して、リストのような反復可能なオブジェクトを引数として渡します。 これはタプルに変換されます。 次に例を示します。
# Creating tuple from a list of values values = tuple([1, 2, 3]) # Printing out the values print(values) # Printing out the data type of the values identifier print(type(values))
ご覧のとおり、関数を使用すると、リテラルを使用した場合と同じ結果が得られます。 ただし、この関数を使用すると、動的な値に基づいてタプルを作成できます。たとえば、値が実行時にしか分からないリストなどです。 最初の方法では、コードを記述するときに、タプルを構成する値または識別子を知っている必要があります。
#3。 空のタプルの作成
コード内でタプルを使用する場合、空のタプルを作成する必要がある場合があります。 ご想像のとおり、空のタプルが作成されます。 それらを作成するときは、タプル コンストラクターまたはリテラル to のいずれかを使用できます。 次に、いずれかの方法を使用する方法を示す例を示します。
# Using the tuple literal empty_tuple_1 = () # Using the constructor empty_tuple_2 = tuple()
空のタプルは、空の結果セットを表す場合に便利です。 次の関数を検討してください。
def create_range(start, end): return tuple(range(start, end))
この関数は、最初から最後に渡した値までの値を持つタプルを作成します。関数の結果を繰り返し処理したい場合は、次のように使用します。
my_values = create_range(0, 5) for value in my_values: pass
create_range 関数に 5 と 5 を指定すると、結果は空のタプルになります。 そして、それを反復しようとすると、反復がゼロになり、コードは通常どおりに処理されます。
一方、空のタプルがなく、代わりに None 値を取得した場合、それを反復しようとするとエラーがスローされます。 プログラムのクラッシュを防ぐには、create_range 関数が None または空のタプルを表すその他の値を返すというエッジ ケースのテストを実装する必要があります。
これにより、コードが乱雑になります。 理想的には、特殊なケースをできるだけ避けたいと思うでしょう。 これは、コードが可能な限り一般的なケースで機能するように、すべての関数の戻り値が同一のインターフェイスを持つ必要があることを意味します。 この場合、これは常にタプルを返すことを意味しますが、空になることもあります。
要素へのアクセス方法
Python でタプルの要素にアクセスするには、2 つの方法があります。 最初の方法はインデックスによるもので、2 番目の方法は要素の構造化によるものです。 まず、インデックスで要素にアクセスする方法を調べます。
インデックスによる要素へのアクセス
インデックスによる要素へのアクセスは、インデックスによるリスト要素へのアクセス方法に似ています。 これは、角括弧表記を使用して行われます。 タプルはゼロから始まるインデックス システムを使用します。つまり、最初の要素はインデックス 0 であり、次の要素は最後の要素までインデックス 1 です。
以下の例は、インデックスによって要素にアクセスする方法を示しています。
# Creating a tuple values = (1, 2, 3, 4) # Accessing the first element first_element = values[0] # Accessing the fourth element(index 3) fourth_element = values[3]
負のインデックスを使用することもできます。 インデックス -1 の要素は最後の要素であり、インデックス -2 の要素は最後の要素から 2 番目の要素です。
# Creating the tuple values = (1, 2, 3, 4) # Accessing the last element last_element = values[-1] # Accessing the second from last element second_from_last_element = values[-2]
さらに、タプルをスライスして要素のサブコレクションにアクセスすることもできます。 これは、リストをスライスする方法に似ています。 表記は以下の通り
# Creating the tuple values = (1, 2, 3, 4, 5, 6, 7) # Getting the first three elements values[1: 3] # Getting every other element values[::2]
要素の繰り返し
タプルは Python の反復可能なオブジェクトです。 したがって、次の例に示すように、for ループを使用して要素を反復処理できます。
values = (1, 2, 3, 4) for value in values: print(value)
この要素へのアクセス方法は、タプル内のすべての要素にアクセスする場合に最適です。
分解による要素へのアクセス
分解を説明するために、タプル内のさまざまな要素を取得しようとしている次のシナリオを考えてみましょう。
# Creating the tuple to record a user's information person_record = (1, 'John Doe', '[email protected]') # Accessing the different elements in the tuple to use in our code id = person_record[1] name = person_record[2] email = person_record[3]
Python では、以下に示すように、より便利な方法を使用して値にアクセスできます。
# Creating the tuple to record a user's information person_record = (1, 'John Doe', '[email protected]') id, name, email = person_record
これをデストラクチャリングと呼びます。 つまり、最初の変数 (この場合は id) にタプルの最初の値が割り当てられ、2 番目の変数が 2 番目の要素に割り当てられます。 これはタプルの最後まで続きます。 上記の例は次と同等です。
id, name, email = (1, 'John Doe', '[email protected]')
この場合、タプルを変数に格納する代わりに、すぐにそれを分解しています。 これと、タプルを作成するときに括弧を使用する必要がないという知識を組み合わせると、次のようなコードを記述できます。
id, name, email = 1, 'John Doe', '[email protected]'
このすべてが終わると、値が 1、’John Doe’、’[email protected]‘。 これは、本番コードで見られる、Python で変数を作成する便利で簡潔な方法です。 この洗練された構文の中心にあるのはタプルの概念であることを知っておくと役に立ちます。
タプルとリストの違い
この 2 つは似ていますが、いくつかの重要な違いにより、それぞれが特定のユース ケースにより適しています。 これらの違いを理解すると、使用するのに最適なデータ型を決定し、より適切で効率的なコードを作成するのに役立ちます。
AspectTupleListメモリ ストレージ連続したメモリに格納メモリのさまざまな部分に格納可変性不変 (変更不可)可変 (変更可能)速度アクセスが速いアクセスが遅いデータ型通常は異なる型のデータを格納通常は同じ型のデータを格納ユースケース通常は次のような同様の値のコレクションを格納するために使用マーク。通常は、マークなどの類似した値のコレクションを格納するために使用されます。
タプルの利点
#1。 それはより速いです
タプルの値は連続したメモリに格納されるため、値へのアクセスはリストよりも高速です。 ただし、タプルは一度作成すると変更できないため、値のコレクションを格納するために使用するのに常に最適なデータ構造とは限りません。
それらの理想的なユースケースは、プログラムの実行中に変更されないが何度もアクセスされるメモリに大量のデータを格納することです。 この場合、あなたのプログラムは、タプルのパフォーマンス向上から非常に恩恵を受けます。
#2。 複数の値を返す
タプルを使用して、関数から複数の値を返し、結果を分解できます。 例えば:
from random import randint def create_two_numbers(): first_num = randint(0, 9) second_num = randint(0, 9) return first_num, second_num first_num, second_num = create_two_numbers()
この例では、2 つの乱数を作成し、両方をタプルで返す関数があります。 return first_num, second_num ステートメントは、return (first_num, second_num) を記述することと同じです。 これは、タプルを作成するときに括弧がオプションであるためです。 結果にアクセスするために、それを破壊しています。
#3。 値は書き込み保護されています
タプルは一度作成されると不変です。 したがって、プログラムの実行中に変更されないデータをメモリに格納するのに理想的です。 コード内の別の場所で誤ってデータを上書きしないようにします。
#4。 複数のデータ型を保存する
タプルを使用すると、複数のデータ型の値を格納できます。 これにより、ユーザーの詳細をタプルに格納するなど、データのレコードを作成できます。 関数、辞書、その他のタプル、さらにはリストなど、より複雑なアイテムを格納することもできます。
一般的なタプル メソッド
#1。 カウント()
タプル オブジェクトには、要素の出現回数をカウントする count メソッドが含まれています。 例えば:
# Creating a tuple with several numbers values = (1, 2, 3, 4, 5, 4, 4, 6) # Counting the number of fours n_fours = values.count(4) # Prining out the number of fours print(n_fours)
この例から、数値 4 がタプルで正確に 3 回発生することがわかります。
#2。 索引()
index メソッドを使用して、タプル内で最初に出現する値のインデックスを見つけることができます。 値が存在しない場合、ValueError 例外がスローされます。 index メソッドがどのように機能するかを示すコードを次に示します。
# Creating a tuple with several numbers values = (1, 2, 3, 4, 5, 4, 4, 6) # Search for index of 4 index_of_four = values.index(4) print("Index of four:", index_of_four) # Search for index of 9 index_of_nine = values.index(9) print("Index of nine:", index_of_nine)
上記のコードを実行すると、次のような出力が得られます。
この場合、4 のインデックスは 3 であり、コードは問題なく実行されました。 しかし、インデックス 9 を見つけることになると、プログラムは例外を発生させました。 index メソッドを使用する Python プログラムを作成する場合は、このような例外を処理することが重要です。
#3。 レン()
Python の反復可能なすべてのオブジェクトと同様に、タプルには長さのプロパティがあり、タプルを引数として len() 関数に渡すとアクセスできます。
# Creating a tuple values = (1, 2, 3, 4) # Getting the length length = len(values) # Print the output print(length)
上記のコードを実行した結果です。
#4。 min() と max()
min メソッドと max メソッドは、イテラブル内の各要素をループ処理し、前の要素よりも大きいか小さいかを比較することによって機能します。 最後に、max は iterable の最大の要素を返し、min は最小の要素を返します。
数字があれば、操作は明らかです。 文字列では、Python はアルファベット順を使用します。 min によって返される最小の単語は、文字列がアルファベット順に記述されている場合、最初の単語です。 最大の単語は最後の単語です。 iterable に異なるデータ型が混在している場合、Python は異なるデータ型を比較する方法を知らないため、操作は両方とも失敗します。
コード例を次に示します。
# Creating tuple with values values = (1, 2, 3, 4, 5) # Getting the largest value largest = max(values) # Getting the smallest value smallest = min(values) # Output the results print(largest) print(smallest)
#5。 ソート済み()
Python の sorted 関数は反復可能なオブジェクトを受け取り、ソートされた要素のリストを返します。 sorted 関数を呼び出し、引数としてタプルを渡し、リストでソートされたタプルの要素を取得できます。 ソートされたリストをタプルに変換するには、コンストラクター関数を使用できます。 次に例を示します。
# Creating a tuple with values in random order values = (1, 5, 3, 3, 2, 4) # Using sorted to sort the values into a list sorted_list = sorted(values) # Converting the list into a tuple sorted_tuple = tuple(sorted_list) # Printing the output print(sorted_tuple)
#6。 タプルの足し算と掛け算
2 つのタプルに対する加算操作は、単純にそれらを連結します。 乗算演算は、タプルの要素を乗算した値と同じ回数繰り返します。 次に、2 つの例を説明するための例を示します。
# Create a tuple with some values values = (1, 2, 3, 4, 5) # Create a new tuple using addition added = values + values # Create a new tuple using multiplication multiplied = values * 2 print("values + values =", added) print("values * 2 =", multiplied)
最後の言葉
この記事では、次のことを学びました。
- タプルは、値のコレクションを格納するために使用されるリストのようなオブジェクトです。
- リストとは異なり、それらは不変です。
- リストよりも高速で効率的です。
- これらは、括弧を使用し、値をコンマで区切って作成できます。
- タプル コンストラクター関数を使用して構築することもできます。
- ゼロから始まるインデックス システムを使用して、個々の値にアクセスできます。
- タプルから値を分解することもできます。
- for ループを使用して値を反復処理することもできます。
- タプルで使用できるさまざまなメソッド。
次に、Python List Methods や Python Dictionary Methods などのその他の Python コンテンツを確認することをお勧めします。