「Pythonデータ構造の基本を5つのステップで始めましょう」

Pythonデータ構造の基本を5つのステップで始めましょう

 

Pythonデータ構造への導入

 

プログラムの学習において、特定のプログラミング言語を使用する場合に関わらず、新しく選んだ分野のいくつかの主要なトピックがあります。一般的な理解の順序に従って、これらのトピックは以下のように分類できます: 構文 (言語の語彙); コマンド (語彙を有用な方法で組み合わせる); フロー制御 (コマンドの実行順序のガイド方法); アルゴリズム (特定の問題を解決するためのステップ…なぜこの言葉はこんなにも混乱するのだろう?); 最後に、データ構造 (アルゴリズムの実行中にデータ操作に使用する仮想ストレージデポ。再び、ステップのシリーズです)。

基本的に、問題の解決策を実装するために、コマンドのシリーズをアルゴリズムのステップに組み合わせることで、ある時点でデータを処理する必要があり、その際にデータ構造が不可欠になります。このようなデータ構造は、データを効率的に整理・保存する方法を提供し、有用な機能を実行し、スケーラブルなコードを作成するために重要です。特定のプログラミング言語であるPythonには、独自の組み込みデータ構造があります。

このチュートリアルでは、次の4つの基礎的なPythonデータ構造に焦点を当てます:

  • リスト – 順序を持ち、変更可能で、重複要素を許容します。データのシーケンスを保存するために便利です。
  • タプル – 順序を持ち、変更不可能で、重複要素を許容します。変更不可能なリストと考えることができます。
  • ディクショナリ – 順序がなく、キー-値のペアでマップされ、変更可能です。キー-値の形式でデータを保存するために便利です。
  • セット – 順序がなく、変更可能で、一意の要素を含みます。メンバーシップテストや重複の排除に便利です。

基礎的なデータ構造の他にも、Pythonはヒープ、キュー、リンクリストなど、より高度な構造を提供しており、これらはコーディング能力をさらに向上させることができます。これらの高度な構造は、基礎となる構造に基づいて構築されており、より複雑なデータ処理に使用されることが多いです。しかし、ここでは制約されることはありません。既存のすべての構造をベースとして独自の構造を実装することもできます。ただし、リスト、タプル、ディクショナリ、およびセットの理解は非常に重要です。これらはより高度なデータ構造の基礎となるものです。

このガイドは、これらの基本的な構造の明確かつ簡潔な理解を提供することを目指しています。Pythonの旅を始めるにあたり、次のセクションでは必要な概念と実際の応用について説明します。リストの作成と操作から、セットのユニークな機能を活用するまで、このチュートリアルは、コーディングで優れた成果を上げるために必要なスキルを身につけるためのものです。

 

ステップ1: Pythonでリストを使用する

 

Pythonにおけるリストとは何ですか?

 

Pythonのリストは、順序があり、変更可能なデータ型であり、重複要素を含めることができます。リストは、要素がコンマで区切られることで、角括弧[ ]を使用して定義されます。

例:

fibs = [0, 1, 1, 2, 3, 5, 8, 13, 21]

 

リストは、データシーケンスを整理・保存するために非常に便利です。

 

リストの作成

 

リストには、文字列、整数、ブール値など、さまざまなデータ型を含めることができます。例:

mixed_list = [42, "こんにちは、世界!", False, 3.14159]

 

リストの操作

 

リストの要素は、アクセス、追加、変更、削除ができます。例:

# 2番目の要素にアクセス (インデックスは'0'から始まります)
print(mixed_list[1])

# 要素の追加
mixed_list.append("これは新しい要素です")

# 要素の変更
mixed_list[0] = 5

# 最後の要素の削除
mixed_list.pop(0)

 

便利なリストのメソッド

 

リストに便利な組み込みメソッドは次のとおりです:

  • sort() – リストをインプレースでソートします
  • append() – 要素をリストの末尾に追加します
  • insert() – 要素を指定したインデックスに挿入します
  • pop() – 指定したインデックスの要素を削除します
  • remove() – 最初に見つかった値を削除します
  • reverse() – リストをインプレースで反転します

 

リストを使った実践例

 

# ショッピングカートをリストとして作成
cart = ["りんご", "オレンジ", "ぶどう"]

# リストをソートする
cart.sort()

# 新しいアイテムを追加
cart.append("ブルーベリー")

# 最初のアイテムを削除
cart.pop(0)

print(cart)

 

出力:

['ぶどう', 'オレンジ', 'ブルーベリー']

 

ステップ2:Pythonでのタプルの理解

 

タプルとは何ですか?

 

タプルは、リストと似たPythonの別のシーケンスデータ型です。ただし、リストとは異なり、タプルは変更不可(immutable)であり、作成後に要素を変更することはできません。タプルは要素を括弧 ( ) で囲んで定義されます。

# タプルの定義
my_tuple = (1, 2, 3, 4)

 

タプルの使用時

 

タプルは一般的に変更されるべきではないアイテムのコレクションに使用されます。タプルはリストよりも高速であるため、読み取り専用の操作に適しています。一般的な使用例は次のとおりです:

  • 定数や設定データの保存
  • 複数の要素を持つ関数の戻り値
  • 辞書のキー(ハッシュ可能なため)

 

タプルの要素へのアクセス

 

タプルの要素へのアクセスは、リストの要素へのアクセスと同様に行います。インデックス指定やスライスも同じように機能します。

# 要素へのアクセス
first_element = my_tuple[0]
sliced_tuple = my_tuple[1:3]

 

タプルの操作

 

タプルは変更不可(immutable)であるため、append()remove() のような多くのリスト操作は適用できません。ただし、いくつかの操作は引き続き行うことができます:

  • 結合: + 演算子を使用してタプルを結合します。
concatenated_tuple = my_tuple + (5, 6)
  • 繰り返し: * 演算子を使用してタプルを繰り返します。
repeated_tuple = my_tuple * 2
  • メンバーシップ: in キーワードを使用してタプル内に要素が存在するかどうかを確認します。
exists = 1 in my_tuple

 

タプルのメソッド

 

タプルはリストと比較して組み込みメソッドが少なく、変更不可(immutable)であるためです。一部の有用なメソッドには次のものがあります:

  • count(): 特定の要素の出現回数を数えます。
count_of_ones = my_tuple.count(1)
  • index(): 最初に見つかった値のインデックスを見つけます。
index_of_first_one = my_tuple.index(1)

 

タプルのパッキングとアンパッキング

 

タプルのパッキングとアンパッキングはPythonの便利な機能です:

  • パッキング: 1 つのタプルに複数の値を割り当てること。
packed_tuple = 1, 2, 3
  • アンパッキング: タプルの要素を複数の変数に割り当てること。
a, b, c = packed_tuple

 

不変ですが厳密ではありません

 

タプル自体は不変ですが、リストなどの可変要素を含むことができます。

# 可変リストを含むタプル
complex_tuple = (1, 2, [3, 4])

 

タプル自体は変更できませんが、その中の可変要素は変更できることに注意してください。

 

ステップ 3: Python における辞書のマスタリング

 

Python における辞書とは何ですか?

 

Python における辞書は、一意のキーと値のマッピングを格納する順不同かつ可変のデータ型です。辞書は波括弧 { } で書かれ、キーと値のペアはコンマで区切られます。

例:

student = {"name": "Michael", "age": 22, "city": "Chicago"}

 

辞書はデータを構造化して格納し、キーによって値にアクセスするために便利です。

 

辞書の作成

 

辞書のキーは文字列、数値、またはタプルなどの不変オブジェクトである必要があります。辞書の値は任意のオブジェクトであることができます。

student = {"name": "Susan", "age": 23}

prices = {"milk": 4.99, "bread": 2.89}

 

辞書の操作

 

要素はキーを通じてアクセス、追加、変更、削除することができます。

# キーによる値のアクセス
print(student["name"])

# 新しいキーと値の追加
student["major"] = "コンピュータサイエンス"

# 値の変更
student["age"] = 25

# キーと値の削除
del student["city"]

 

便利な辞書のメソッド

 

いくつかの便利な組み込みメソッドには次のものがあります:

  • keys() – キーのリストを返します
  • values() – 値のリストを返します
  • items() – (キー、値) のタプルを返します
  • get() – キーに対する値を返します(KeyError を回避します)
  • pop() – キーを削除し、値を返します
  • update() – 複数のキーと値を追加します

 

辞書を使った実践例

 

scores = {"Francis": 95, "John": 88, "Daniel": 82}

# 新しいスコアの追加
scores["Zoey"] = 97

# John のスコアの削除
scores.pop("John")

# Daniel のスコアの取得
print(scores.get("Daniel"))

# すべての学生の名前を表示
print(scores.keys())

 

ステップ 4: Python での集合の探索

 

Python における集合とは何ですか?

 

Python における集合は、一意かつ不変のオブジェクトの無秩序な可変コレクションです。集合は波括弧 { } で書かれますが、辞書とは異なり、キーと値のペアは持ちません。

例:

numbers = {1, 2, 3, 4}

 

集合はメンバーシップのテスト、重複の排除、および数学的な操作に便利です。

 

集合の作成

 

セットは、リストをset()コンストラクタに渡すことで作成できます:

my_list = [1, 2, 3, 3, 4]
my_set = set(my_list) # {1, 2, 3, 4}

 

セットには、文字列、ブール値などの異なるデータ型を含めることができます。

 

セットの操作

 

要素をセットに追加したり削除したりすることができます。

numbers.add(5) 

numbers.remove(1)

 

便利なセットの操作

 

いくつかの便利なセットの操作には以下があります:

  • union() – 2つのセットの和を返します
  • intersection() – セットの共通部分を返します
  • difference() – セットの差を返します
  • symmetric_difference() – 対称差を返します

 

セットの実践的な例

 

A = {1, 2, 3, 4}
B = {2, 3, 5, 6}

# 和 - セットを結合する
print(A | B) 

# 共通部分
print(A & B)

# 差
print(A - B)

# 対称差
print(A ^ B)

 

ステップ5:リスト、辞書、およびセットの比較

 

特性の比較

 

以下は、このチュートリアルで参照した4つのPythonデータ構造の簡潔な比較です。

構造 順序あり 変更可能 重複要素 使用例
リスト Yes Yes Yes シーケンスの保存
タプル Yes No Yes 変更不可能なシーケンスの保存
辞書 No Yes キー:No値:Yes キーと値のペアの保存
セット No Yes No 重複の削除、メンバーシップのテスト

 

各データ構造を使用するタイミング

 

特定の状況に最初に取り組むための柔軟なガイドラインとして扱ってください。

  • 順序付けられた、シーケンスベースのデータにはリストを使用します。スタック/キューに便利です。
  • 順序付けられた、変更不可能なシーケンスにはタプルを使用します。変更されるべきではない要素の固定されたコレクションが必要な場合に便利です。
  • キーと値のデータには辞書を使用します。関連するプロパティの保存に便利です。
  • ユニークな要素と数学的な操作の保存にはセットを使用します。

 

全てのデータ構造を使用した実践的な例

 

これらの構造がどのように一緒に動作するかを、ワンライナーよりも少し複雑な例で見てみましょう。

# 人名のリストを作成します
names = ["John", "Mary", "Bob", "Mary", "Sarah"]

# 追加情報(例:メールアドレス)のタプルを作成します
additional_info = ("[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]")

# 重複を削除するためのセットを作成します
unique_names = set(names)

# 名前と年齢のペアの辞書を作成します
persons = {}
for name in unique_names:
  persons[name] = random.randint(20,40)

print(persons)

 

出力:

{'John': 34, 'Bob': 29, 'Sarah': 25, 'Mary': 21}

 

この例では、順序付けられたシーケンスのためにリスト、追加の不変情報のためにタプル、重複を削除するためにセット、そしてキーと値のペアを格納するために辞書を利用しています。

 

これから

 

この包括的なチュートリアルでは、リスト、タプル、辞書、セットなど、Pythonの基本的なデータ構造について詳しく見てきました。これらの構造はPythonプログラミングの基礎を形成し、データの格納、処理、操作のためのフレームワークを提供します。これらの構造を理解することは、効率的でスケーラブルなコードの記述に不可欠です。リストを使用したシーケンスの操作から、辞書でのキーと値のペアのデータの組織化、セットでの一意性の確保まで、これらの重要なツールはデータの処理において非常に柔軟性を提供します。

コードの例を通じて見てきたように、これらのデータ構造はさまざまな方法で組み合わせて複雑な問題を解決することができます。これらのデータ構造を活用することで、データ分析や機械学習など、さまざまな可能性を開くことができます。さらに洞察を得るために、公式のPythonデータ構造のドキュメントを探索することを躊躇しないでください。

Happy coding!

    Matthew Mayo@mattmayo13)は、コンピュータサイエンスの修士号とデータマイニングの卒業ディプロマを持っています。VoAGIの編集長として、Matthewは複雑なデータサイエンスの概念をアクセス可能にすることを目指しています。彼の専門的な関心事は、自然言語処理、機械学習アルゴリズム、新興のAIの探求です。彼はデータサイエンスコミュニティでの知識を民主化するという使命に駆られています。Matthewは6歳の時からコーディングを始めました。  

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more