リストとタプルの違いは何ですか?
公開: 2021-11-28タプルとリストは、Pythonで使用されるデータ構造の一種です。 リストは角括弧を使用して単一の変数にデータを格納しますが、タプルは括弧を使用して1つの変数にデータを格納します。 両方の構造は、複数の値とオブジェクトを格納するために使用されます。
この記事では、リストとタプルの主な違いを掘り下げ、それらのユースケースを探ります。 しかし、最初に、それらの間のコアの類似点を簡単に見てみましょう。
- タプルとリストの両方に、すべてのデータ型のアイテムとオブジェクトを格納できます。
- タプルとリストの両方で、それぞれのインデックスを使用してデータにアクセスできます。
- これらのデータ型はどちらも、さまざまなデータ項目をコンパイルおよびカタログ化できます。
目次
Pythonタプルとリスト
1.構文の違い
リストとタプルの宣言は、Pythonでは常に異なります。 リストは「[]」角括弧を使用して宣言されますが、タプルの宣言は「()」を使用して行われます。
Pythonでリストとタプルを宣言する方法をよりよく理解するための例を次に示します。
list_num = [7,8,9,10]
tup_num =(10,11,13,14)
print(list_num)
print(tup_num)
このシーケンスへの出力は次のようになります。
[7,8,9,10]
(10、11、13、14)
この例では、7から10までの数値に対応するlist_numという名前の変数が定義されています。また、出力が角かっこで囲まれていることもわかります。 ただし、tup_numとして定義され、10から14までの数値を保持する変数は、括弧を使用して出力を表示します。
Pythonは、作成されたアイテムのタイプを理解するのに役立つtype()関数を使用します。
print(type(tup_num))
print(type(list_num))
出力:
<クラス'タプル'>
<クラス'リスト'>
2.可変性(可変vs不変)
タプルとリストは、それらの可変性に関しては矛盾しています。 タプルは不変の構造であり、作成後に変更または変更することはできません。 それどころか、リストは変更可能な構造であり、作成後に簡単に変更または変更できます。
不変であるため、辞書のキーとして使用できるのはタプルのみです。 必要なときにリストをキーとして使用することはできません。
3.オブジェクトの変更(リストとタプル)
リストに変更を加える試みが作成されたときに何が起こるかを調べてみましょう。
名前=[alex、rick、martin]
名前[0]=“ roxy”
注:最初の要素は常に1ではなく0と呼ばれます。
次に、次のコマンドの後に出力がどのようになるかを見てみましょう。
>>>名前
出力:
[ロキシー、リック、マーティン]
出力は、リストの最初の項目がどのように変更されたかを示しています。
次に、タプルが使用された場合の結果を見てみましょう。
名前=(alex、rick、martin)
タプル内のアイテムがを使用して変更された場合
name(0)=“ roxy”
出力は次のようになります。
TypeError:'tuple'オブジェクトはアイテムの割り当てをサポートしていません。
これは、タプルデータ構造が後で変更されたオブジェクトをサポートしていないことを意味します。 したがって、変更できるのはリストのみであり、タプルは変更できないと結論付けることができます。
4.コピーと再利用
タプルをコピーすることはできません。 ここでの理由は、タプルの不変の性質です。 たとえば、タプル(tup_name)を実行すると、タプルがそれ自体に復元されたことがわかります。
例:
名前=('allen”、” siri”、“ Michaela”)
copyNames = tuple(names)
print(names is copyNames)
ここでの出力は– 「True」になります。
それどころか、リストに対して同じことをしようとすると(例に示されているように):
例:
names = [“ allen”、“ siri“'“ Michael”]
copyNames =リスト(名前)
print(names is copyNames)
出力は「false」として表示されます。
真の出力を得るには、完全な名前をコピーして新しいリストに貼り付ける必要があります。
5.Pythonタプルとリスト| サイズの違い
タプルは不変であるため、Pythonはタプルメモリを比較的低いオーバーヘッドの大きなブロックの形式でのみ割り当てます。 リストの場合、Pythonは小さいサイズのメモリブロックのみを提供します。 その結果、タプルにはリストと比較してわずかな量のメモリしかありません。 ただし、これは、多くのアイテムが関係している場合、タプルはリストよりもはるかに高速に使用できることを意味します。
6.異種vs同種
タプルは、異種のさまざまなタイプの要素を格納できます。 それどころか、リストには、同種の同じバリアントの機能またはデータを格納できます。
ただし、これは意味上の違いにすぎません。 たとえば、リストにはさまざまなタイプのデータを格納でき、タプルには同じ種類のデータを格納することもできます。
例:
list_elements = ['allen'、20、'mary']
tuple_elements =('allen'、“ mary”、'alex')
リストに数字と文字列の組み合わせが含まれていても、コードはシームレスに実行されます。
7.長さの違い
リストとタプルも長さとサイズが異なります。 タプルの長さはさまざまですが、タプルの長さは固定されています。 したがって、リストのサイズは、一度定義されると固定されたままのタプルの長さとは異なり、いつでも変更できます。
例:
list_names = ['allen'、'mary'、'alex']
list_names.append( "roxy")
print(list_names)
出力:
['allen'、'mary'、'alex'、'roxy']
リストが関係している場合は、append()関数の代わりにinsert()関数を使用して正確な出力を実現することもできます。
ただし、タプルデータ構造では、サイズを変更する方法は提供されません。
8.ユースケース
さまざまな状況下で、これらのデータ構造の少なくとも1つは適切に機能します。 これは通常、データ構造が使用されるプログラムのコーダーに依存します。 データ構造は、データ項目が将来書き換えられるかどうかに基づいて選択されます。
タプルは、リストと比較した場合、データ構造としてはるかに重要です。理由は次のとおりです。
- リストの代わりにタプルを使用すると、情報を変更しないようにコーダーまたはデータインタープリターに通知できます。
- タプルを使用して、キーなしでデータを復元することもできます。
- タプルはPythonの辞書に相当します。
- リスト内に格納されているタプルは非常に読みやすいです。
タプルの不変でハッシュ可能な性質により、タプルは辞書の完全な代替品になります。 一方、辞書は_hash_()関数をサポートしていないため、リストを使用して辞書を置き換えることはできません。
例:
key_val = {('alex'、'brave'):124} #Valid
key_val = {['alex'、'brave']:124} #Invalid
9.ネストリストとタプル
タプルとリストは相互に格納できます。 ネストされたタプルは、より多くのタプルを保持できます。 同様に、ネストされたリストにもさらに多くのリストを含めることができます。
10.デバッグ
タプルは、リストと比較すると、より広範なプロジェクトでのデバッグがはるかに簡単です。 これは、タプルの不変の特性によるものです。 ただし、関係するデータの量がはるかに少ない場合は、常にリストに依存することをお勧めします。 タプルは、バグの追跡が難しいリストとは異なり、変更できないため、追跡もはるかに簡単です。
11.機能と操作
Pythonには、sorted、sum、all、min、max、leanなど、タプルとリストに適用できるいくつかの有益な関数があります。
操作に関しては、リストとタプルに多くの類似点があります。 ただし、リストには、タプルにはない追加の機能がいくつかあります。 これらは主に、アイテムの削除と保存に加えて、ポップと挿入の操作です。
重要なポイント
- タプルの機能はリストよりも少なくなります。
- タプルの構造は不変ですが、リストの構造は変更可能です。
- タプルの長さは固定されていますが、リストの長さはさまざまです。
- リストの構文は「[]」角括弧で表されますが、タプルの構文は「()」括弧の形式で表されます。
- タプルは、リストと比較した場合、より少ないメモリを消費します。
- タプルデータ構造は、要素へのアクセスが含まれる場合に最適です。
- 関数リストは、削除と挿入の特定の操作を実行するのに優れています。
- タプルに関係する反復は、リストに関係する反復よりも高速です。
- リストには複数のビルドされたメソッドが含まれている可能性がありますが、タプルには含まれていません。
upGradの18か月のデータサイエンスの理学修士を通じて、Pythonの本質とその高度な概念について詳しく学びましょう。 リバプールジョンムーア大学とIIITバンガロアと共同でプログラム。 業界をリードする教授陣を自由に利用でき、500時間以上の学習教材と疑問解決クラスを備えているため、学生はPythonやその他のデータサイエンスの基礎を習得して、それに応じてキャリアを伸ばすことができます。 さらに、このプログラムは、Tableau、MySQL、Excel、MongoDBなどの14を超える言語とツールで能力を開発するのに役立ちます。
だから、躊躇しないでください。 今日私たちに連絡してください!
タプルまたはリストをいつ使用するのですか?
データ項目を読み取り専用にする必要がある場合は、タプルを使用する必要があります。 変更されないデータの可用性が保証されているため、データはタプル内で一定のままです。
ただし、リストは非常に変更可能です。 したがって、それらのデータはいつでも変更できます。 リストへのアイテムの移動、切り替え、削除、および追加は非常に柔軟です。 これらは、プログラムサイクルの後の段階でデータを変更する必要がある場合に最適に使用されます。
リストと比較した場合、タプルは高速ですか?
はい、タプルの作成はリストの作成よりもはるかに短時間で済みます。 リストを作成するときは、複数のメモリブロックにアクセスする必要があります。 これは、タプルの要素を削除および置換できないのに対し、リストの機能はプログラムサイクル中に数回変更される可能性があるためです。
タプルとリストは実際の生活のどこで使用されていますか?
特定のレシピを使用して特定の料理を調理するために必要な手順を保存するためのリストを作成できます。 このリストには、データへの順次アクセスが含まれます。 したがって、ステップに順番にアクセスできます。 一方、タプルは、住居の経度や緯度などのデータを保存するために使用できます。 これは、タプルが事前定義されたデータのコレクションであるためです。 同じタプルを使用して、他の場所の位置座標を保存することもできます。