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

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で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
PythonスクリプトがUNIXで実行されない可能性がある一般的な理由は何ですか?PythonスクリプトがUNIXで実行されない可能性がある一般的な理由は何ですか?Apr 28, 2025 am 12:18 AM

PythonスクリプトがUNIXシステムで実行できない理由には、次のものが含まれます。1)CHMOD XYOUR_SCRIPT.PYを使用して実行権限を付与する不十分な権限。 2)shebangラインが正しくないか欠落している場合、#!/usr/bin/envpythonを使用する必要があります。 3)環境可変設定が誤っていない場合、OS.Environデバッグを印刷できます。 4)間違ったPythonバージョンを使用して、Shebangラインまたはコマンドラインでバージョンを指定できます。 5)仮想環境を使用して依存関係を分離する依存関係の問題。 6)構文エラー、python-mpy_compileyour_script.pyを使用して検出します。

Pythonアレイを使用することがリストを使用するよりも適切なシナリオの例を挙げてください。Pythonアレイを使用することがリストを使用するよりも適切なシナリオの例を挙げてください。Apr 28, 2025 am 12:15 AM

Pythonアレイの使用は、リストよりも大量の数値データの処理に適しています。 1)配列を保存するメモリを保存します。2)アレイは数値的な値で動作するのが高速です。3)アレイフォースタイプの一貫性、4)アレイはCアレイと互換性がありますが、リストほど柔軟で便利ではありません。

Pythonでリストと配列を使用することのパフォーマンスへの影響は何ですか?Pythonでリストと配列を使用することのパフォーマンスへの影響は何ですか?Apr 28, 2025 am 12:10 AM

listSareのより良い前提条件とmixdatatypes、whilearraysares優れたスナリカル計算砂の砂を大きくしたデータセット。

Numpyは、大きな配列のメモリ管理をどのように処理しますか?Numpyは、大きな配列のメモリ管理をどのように処理しますか?Apr 28, 2025 am 12:07 AM

numpymanagesmemoryforlargearrayseffictificleusing biews、copies、andmemory-mappedfiles.1)rewsinging withotingcopying、directmodifying theoriginalArray.2)copiescanbecreatedwithcopy()methodforpreservingdata.3)Memory-MapplehandLemassiutasedatasetasedatasetasetasetasetasetasedas

モジュールのインポートが必要なのはどれですか:リストまたは配列は?モジュールのインポートが必要なのはどれですか:リストまたは配列は?Apr 28, 2025 am 12:06 AM

listsinpythondonotrequireimportingamodule、whilearrays fromthearraymoduledoneedanimport.1)listsarebuiltin、versatile、andcanholdmixeddatypes.2)araysaremoremory-efficient-fornumerumerumerumerumerumerdatabutでき、対象となるンドベフェフサメタイプ。

どのデータ型をPythonアレイに保存できますか?どのデータ型をPythonアレイに保存できますか?Apr 27, 2025 am 12:11 AM

Pythonlistscanstoreanydatatype,arraymodulearraysstoreonetype,andNumPyarraysarefornumericalcomputations.1)Listsareversatilebutlessmemory-efficient.2)Arraymodulearraysarememory-efficientforhomogeneousdata.3)NumPyarraysareoptimizedforperformanceinscient

Pythonアレイに間違ったデータ型の値を保存しようとするとどうなりますか?Pythonアレイに間違ったデータ型の値を保存しようとするとどうなりますか?Apr 27, 2025 am 12:10 AM

heouttemptemptostoreavure ofthewrongdatatypeinapythonarray、yure counteractypeerror.thisduetothearraymodule'sstricttypeeencultionyを使用します

Python Standard Libraryの一部はどれですか:リストまたは配列はどれですか?Python Standard Libraryの一部はどれですか:リストまたは配列はどれですか?Apr 27, 2025 am 12:03 AM

PythonListSarePartOfThestAndardarenot.liestareBuilting-in、versatile、forStoringCollectionsのpythonlistarepart。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません