ホームページ > バックエンド開発 > Python チュートリアル > Python 名前付きタプルを使用してコードの明瞭さを強化する

Python 名前付きタプルを使用してコードの明瞭さを強化する

尊渡假赌尊渡假赌尊渡假赌
リリース: 2024-01-02 10:35:57
転載
2448 人が閲覧しました

Python のコレクション モジュールには、「Namedtuple」と呼ばれる機能があります。「Namedtuple」は、コードの表現力を高めるための名前付き要素を含むタプルです。 Python の辞書と同じように、「Namedtuple」を使用すると、インデックスの代わりにタプルのメンバーを使用して要素にアクセスできます。

Python 名前付きタプルを使用してコードの明瞭さを強化する

Python 名前付きタプルを使用してコードの明瞭さを向上させる

作成、分解、最適化する方法を学ぶメモリ よりクリーンで読みやすいコードに使用します。実際の例とベスト プラクティスを調べてください。

Python のコレクション モジュールには、「Namedtuple」と呼ばれる機能があります。「Namedtuple」は、コードの表現力を高めるための名前付き要素を含むタプルです。 Python の辞書と同様に、「Namedtuple」を使用すると、インデックスの代わりにタプルのメンバーを使用して要素にアクセスできます。

名前付きタプルの作成

名前付きタプルを作成するには、コレクション モジュールで関数「namedtuple」を使用する必要があります。

from collections import namedtuple

# Define a employee tuple that has fields id, name and location.
Employee = namedtuple ('Employee', 'id name location')

# Create instances of Employee
employee1 = Employee (id=10, name='John Doe', location='Atlanta')
employee2 = Employee (id=11, name='Mick', location='Dallas')
ログイン後にコピー

Namedtuple からの要素へのアクセス

「Namedtuple」は、要素にアクセスするための二重メカニズムを提供します。まず、属性名を介して要素にアクセスでき、2 番目のメカニズムでは従来の数値インデックスが使用されます。

print(f"{employee1.name} - {employee1.location}") # John Doe - Atlanta
print(f"{employee2.name} - {employee2.location}") # Mick – Dallas
ログイン後にコピー

要素には、数値インデックスを使用してアクセスすることもできます。

print(f"{employee1[1]} - {employee1[2]}") # John Doe - Atlanta
print(f"{employee2[1]} - {employee2[2]}") # Mick – Dallas
ログイン後にコピー

不変性

不変性は「名前付きタプル」の基本的なプロパティであり、通常のタプルから継承されます。これは、作成時にフィールドの値が設定されると、その値を変更できないことを意味します。

try:
    employee1.name = 'David'
except AttributeError as e:
    print(f"AttributeError: {e}") # AttributeError: can't set attribute
ログイン後にコピー

メソッド

"Namedtuple" は、データを構造化するためのクリーンで読みやすい方法を提供するだけでなく、 "Namedtuple" の機能を強化するいくつかの便利なメソッドも提供します。

a) _asdict(): _asdict() メソッドは名前付きタプルを辞書形式で返し、「名前付きタプル」を他のデータ構造と互換性のある形式に変換する便利な方法を提供します。

employee1._asdict() # {'id': 10, 'name': 'John Doe', 'location': 'Atlanta'}
ログイン後にコピー

b) _replace(): _replace() メソッドは、指定されたフィールドを新しい値に置き換えて、「Namedtuple」の新しいインスタンスを作成します。このアプローチは、変更を許可しながら不変性を維持するために重要です。

employee1_modified = employee1._replace(location='DFW')
employee1_modified # Employee(id=10, name='John Doe', location='DFW')
ログイン後にコピー

c) _make(): _make(iterable) メソッドは、反復可能なオブジェクトから「namedtuple」の新しいインスタンスを作成します。たとえば、_make() メソッドを使用してリストから Namedtuple を作成できます。

employee_list = [21, 'Bob','Gallup']
Employee._make(employee_list) # Employee(id=21, name='Bob', location='Gallup')
ログイン後にコピー

Namedtuple のアンパック

アンパック プロセスを通じて、Python の「Namedtuple」を使用すると、単一の簡潔なステートメントで値を個々の変数に割り当てることができます。

id, name, location = employee1
print(f"id: {id}, name: {name}, location:{location}")
ログイン後にコピー

「名前付きタプル」を別のデータ構造に変換する

list() コンストラクターを使用して、名前付き タプル をリストに変換できます。以下に例を示します。

list(employee1) # [10, 'John Doe', 'Atlanta']
ログイン後にコピー

"_asdict()" メソッドを使用して、名前付きタプルを辞書に変換できます。このメソッドは、通常の辞書に変換できる OrderedDict を返します。以下に例を示します。

dict(employee1._asdict()) # {'id': 10, 'name': 'John Doe', 'location': 'Atlanta'}
ログイン後にコピー

「Namedtuple」を使用する利点

可読性:「Namedtuple」は、要素に意味のある名前を付けることでコードをより読みやすくします。インデックスベースのアクセスが必要です。

変数: 通常のタプルと同様、「名前付きタプル」は不変です。一度作成すると、その値は変更できません。

メモリ効率: 「名前付きタプル」はメモリ効率が高く、同等のクラスよりも占有するスペースが少なくなります。 Namedtuple で得られるメモリ効率は、多数のインスタンスが関係するシナリオや大規模なデータ セットを扱う場合によく見られることに注意することが重要です。

軽量データ構造: カスタム メソッドを使用しない単純なクラスの作成に最適です。

データ ストレージ: 特に完全なクラスが必要ない場合に、構造化データを保存するのに便利です。

API およびデータベース レコード: データベースから返されたレコード、または API から受信したデータを表すために使用されます。 Python の

"Namedtuple" は、構成設定など、名前付きフィールドを含むシンプルで

不変のデータ

構造が必要なシナリオに最適です。わかりやすくし、使いやすくするために、名前付きフィールドの構成設定があります。

データベース レコード: 「Namedtuple」はデータベース レコードを表すことができ、どのフィールドがテーブル内のどの列に対応するかを明確にします。

コマンド ライン解析: "Namedtuple" を使用して、解析されたコマンド ライン パラメータを保存し、入力パラメータの明確な構造を提供します。

名前付き定数: 「Namedtuple」を使用すると、コード内で名前付き定数を表すことができ、定数値を定義する明確で読みやすい方法を提供します。

「Namedtuple」は、明瞭さ、可読性、不変性を提供することでこれらのシナリオに優れており、簡潔に構造化されたデータのための貴重なツールとなります。

以上がPython 名前付きタプルを使用してコードの明瞭さを強化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:dzone.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート