ホームページ > バックエンド開発 > Python チュートリアル > Python チュートリアル - ata 構造

Python チュートリアル - ata 構造

DDD
リリース: 2024-12-23 19:36:15
オリジナル
294 人が閲覧しました

導入

データ構造はデータを整理するためのツールです。保管だけでなく、いくつかの問題の解決にも役立ちます。 Python にはリスト、辞書、タプル、セットなどのデータ構造がいくつかあります。

リスト

リストは、インデックスを使用して項目を順番に格納するデータ構造です。これはリストのデータ構造を示す図です。

Python Tutorial - ata Structure

Python でリストを作成する方法はたくさんあります。

  1. リスト内の値を直接初期化します。
items = [1,2,3,4]
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  1. 空のリストを初期化します。
items = []
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

リスト内の項目には、インデックスを介して直接アクセスできます。

items = [1,2,3,4,5]

# access item at index 2
result = items[2]

print(result) # returns 3
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

リスト内のすべての項目は、for ループを使用して取得できます。これは一例です。

# create a new list
items = [1,2,3,4,5]

# retrieve each item inside a list
for item in items:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

1
2
3
4
5
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記のコードに基づいて、項目が割り当てられた items というリストが作成されます。各項目は for ループを使用して取得されます。

リストの基本操作

append() 関数は、リストに新しい項目を追加します。これは append() の使用例です。

# create empty list
shopping_list = []

# add some items
shopping_list.append("apple")
shopping_list.append("milk")
shopping_list.append("cereal")

# retrieve all items
for item in shopping_list:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

apple
milk
cereal
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

append() を下の図に示します。

Python Tutorial - ata Structure

append() 関数のほかに、insert() 関数は特定のインデックスに新しい項目を追加します。これは一例です。

items = ["apple","banana","mango","coffee"]

# add new item at index 1
items.insert(1,"cereal")

# retrieve all items
for item in items:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

apple
cereal
banana
mango
coffee
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

insert() を下の図に示します。

Python Tutorial - ata Structure

リスト内の項目を更新するのは簡単です。項目のインデックスを指定して、更新された項目に変更するだけです。

# create a list
drinks = ["milkshake","black tea","banana milk","mango juice"]

# update value at index 2
drinks[2] = "chocolate milk"

print(f"value at index 2: {drinks[2]}")
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

value at index 2: chocolate milk
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

remove() 関数はリストから項目を削除します。これは一例です。

items = ["apple","banana","mango","coffee"]

# remove "mango"
items.remove("mango")

# remove item at index 1
items.remove(items[1])

print("after removed")
for item in items:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

after removed
apple
coffee
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

リスト内の項目は、リストの開始インデックスと終了インデックスを指定することで選択できます。これは、リスト内の項目を選択するための基本的な構造です。

list_name[start:end]
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

項目は開始インデックスから終了インデックスまで選択されますが、終了インデックスは含まれません。これはリスト内の項目を選択する例です。

items = ["apple","mango","papaya","coconut","banana"]

# select items from index 1 up to but not including index 3
selected = items[1:3]

# show all items
print(f"all items: {items}")

# show the selected items
print(f"selected: {selected}")
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

all items: ['apple', 'mango', 'papaya', 'coconut', 'banana']
selected: ['mango', 'papaya']
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

リストの内包表記

リスト内包表記は、リストを作成する「機能的な」方法です。リストの内包理解を理解するために、反復アプローチを使用して偶数の値を含むリストを作成する例を見てみましょう。

evens = []

for i in range(1,11):
    evens.append(i*2)

print(evens)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

items = [1,2,3,4]
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記のコードに基づいて、for ループを使用した反復アプローチを使用して偶数が生成されます。上記の例は、リスト内包表記を使用しても実現できます。これはリスト内包表記を使用して偶数を生成する例です。

items = []
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

items = [1,2,3,4,5]

# access item at index 2
result = items[2]

print(result) # returns 3
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記のコードに基づいて、リスト内包アプローチはより簡潔なコードと、前の反復アプローチと同じ結果を提供します。

リスト内包表記は if 分岐と併用できます。この例では、リスト内包表記を使用して、特定の条件に基づいて特定の値をフィルター処理します。

# create a new list
items = [1,2,3,4,5]

# retrieve each item inside a list
for item in items:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

1
2
3
4
5
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これは、前の例の反復バージョンです。

# create empty list
shopping_list = []

# add some items
shopping_list.append("apple")
shopping_list.append("milk")
shopping_list.append("cereal")

# retrieve all items
for item in shopping_list:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

多次元リスト

リストは行列のような多次元アプローチで保存できます。これは、数値行列を格納するための多次元リストを宣言する例です。

apple
milk
cereal
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

項目には、メイン リストのインデックスを表す x を指定し、入れ子になったリスト内の項目のインデックスを表す y を指定することにより、二重角括弧 ([x][y]) でアクセスできます。これは数値行列の図です。

Python Tutorial - ata Structure

多次元リスト内の項目は、ネストされた for ループを利用して取得できます。

items = ["apple","banana","mango","coffee"]

# add new item at index 1
items.insert(1,"cereal")

# retrieve all items
for item in items:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

apple
cereal
banana
mango
coffee
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

辞書

辞書は、レコードをキーと値のペアとして保存するデータ構造です。各キーは一意である必要がありますが、値の重複は許可されます。これは辞書のデータ構造を示しています:

Python Tutorial - ata Structure

辞書を作成するにはさまざまな方法があります:

  1. 初期化されたレコードを含む辞書を作成します。
# create a list
drinks = ["milkshake","black tea","banana milk","mango juice"]

# update value at index 2
drinks[2] = "chocolate milk"

print(f"value at index 2: {drinks[2]}")
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  1. 空の辞書を作成します。
value at index 2: chocolate milk
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

辞書内のすべてのレコードは、for ループを使用して取得できます。これは一例です。

items = ["apple","banana","mango","coffee"]

# remove "mango"
items.remove("mango")

# remove item at index 1
items.remove(items[1])

print("after removed")
for item in items:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

after removed
apple
coffee
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

辞書の基本操作

辞書内に新しい項目を挿入するには、項目のキーと値のペアを指定します。キーが一意であることを確認してください。

list_name[start:end]
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これは、辞書内に新しい項目を挿入する例です。

items = ["apple","mango","papaya","coconut","banana"]

# select items from index 1 up to but not including index 3
selected = items[1:3]

# show all items
print(f"all items: {items}")

# show the selected items
print(f"selected: {selected}")
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

all items: ['apple', 'mango', 'papaya', 'coconut', 'banana']
selected: ['mango', 'papaya']
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

辞書内の項目を更新するには、項目のキーを指定して、更新された値を挿入します。

evens = []

for i in range(1,11):
    evens.append(i*2)

print(evens)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

辞書内のキーと値は、さまざまな方法を使用して個別にアクセスできます。

evens = [x*2 for x in range(1,11)] # using list comprehension
print(evens)
ログイン後にコピー
ログイン後にコピー

出力

items = [1,2,3,4]
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

pop() メソッドは、指定されたキーに基づいて辞書から項目を削除します。

items = []
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

items = [1,2,3,4,5]

# access item at index 2
result = items[2]

print(result) # returns 3
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

clear() メソッドは、辞書内のすべての項目を削除します。

# create a new list
items = [1,2,3,4,5]

# retrieve each item inside a list
for item in items:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

1
2
3
4
5
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

タプル

タプルは、多くの値を格納するための不変のデータ構造です。タプルには変更可能な値が含まれる場合があります。新しいタプルを作成するには 2 つの方法があります。

  1. 値が割り当てられたタプルを作成します。
# create empty list
shopping_list = []

# add some items
shopping_list.append("apple")
shopping_list.append("milk")
shopping_list.append("cereal")

# retrieve all items
for item in shopping_list:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

apple
milk
cereal
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  1. 空のタプルを作成します。
items = ["apple","banana","mango","coffee"]

# add new item at index 1
items.insert(1,"cereal")

# retrieve all items
for item in items:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

タプルの基本操作

タプルは不変です。つまり、作成後に値を変更または更新することはできません。

apple
cereal
banana
mango
coffee
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

タプルの値は、「タプルのアンパック」を使用して取得できます (この概念は JavaScript のオブジェクトの構造化に似ています)。

アンパックするとき、アンパックされた値のサイズはタプルのサイズと等しくなければなりません。

# create a list
drinks = ["milkshake","black tea","banana milk","mango juice"]

# update value at index 2
drinks[2] = "chocolate milk"

print(f"value at index 2: {drinks[2]}")
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

value at index 2: chocolate milk
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

セット

セットは、一意の項目のみを含む順序付けされていないデータ構造です。セットを作成するにはさまざまな方法があります。

items = ["apple","banana","mango","coffee"]

# remove "mango"
items.remove("mango")

# remove item at index 1
items.remove(items[1])

print("after removed")
for item in items:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

空のセットは set() 関数を使用して作成できます。

after removed
apple
coffee
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

設定されたデータ構造により、重複する値が自動的に削除されます。

list_name[start:end]
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

items = ["apple","mango","papaya","coconut","banana"]

# select items from index 1 up to but not including index 3
selected = items[1:3]

# show all items
print(f"all items: {items}")

# show the selected items
print(f"selected: {selected}")
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

セット内の値には、for ループを使用してアクセスできます。

all items: ['apple', 'mango', 'papaya', 'coconut', 'banana']
selected: ['mango', 'papaya']
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

evens = []

for i in range(1,11):
    evens.append(i*2)

print(evens)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

基本操作の設定

セットのデータ構造は、和集合、交差、差分、対称差分などの多くの演算を提供します。

結合演算は、両方のセット内のすべての項目を返します。

Python Tutorial - ata Structure

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

evens = [x*2 for x in range(1,11)] # using list comprehension
print(evens)
ログイン後にコピー
ログイン後にコピー

交差演算は、セットの交差に存在するすべての項目を返します。

Python Tutorial - ata Structure

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

samples = [12,32,55,10,2,57,66]

result = [s for s in samples if s % 4 == 0] # using list comprehension

print(result)
ログイン後にコピー

差分演算は、特定のセットにのみ存在するすべての項目を返します。

Python Tutorial - ata Structure

[12, 32]
ログイン後にコピー

出力

samples = [12,32,55,10,2,57,66]

result = []

for s in samples:
    if s % 4 == 0:
        result.append(s)

print(result)
ログイン後にコピー

対称差分演算は、いずれかのセットに存在するが交差部分には存在しないすべての項目を返します。

Python Tutorial - ata Structure

matrix = [
 [1,2,3],
 [4,5,6],
 [7,8,9],
]
ログイン後にコピー

出力

items = [1,2,3,4]
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

機能の紹介

この関数は、コードの重複を減らし、複雑なタスクを整理することを目的とした命令を含む呼び出し可能なユニットです。 void 関数 (戻り値なし) と値を返す関数の 2 種類があります。

これは Python の関数の基本構造です。

items = []
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これは、Python の void 関数 (戻り値なし) の例です。

items = [1,2,3,4,5]

# access item at index 2
result = items[2]

print(result) # returns 3
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

# create a new list
items = [1,2,3,4,5]

# retrieve each item inside a list
for item in items:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記のコードに基づいて、hello() という関数が作成されます。関数名に括弧 () を付けて指定することで関数を呼び出します。

これは戻り値のある関数の例です。

1
2
3
4
5
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

# create empty list
shopping_list = []

# add some items
shopping_list.append("apple")
shopping_list.append("milk")
shopping_list.append("cereal")

# retrieve all items
for item in shopping_list:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記のコードに基づいて、2 つの数値を合計する add() という関数が作成されます。 add() 関数の戻り値は結果変数内に格納されます。

戻り値関数を使用する場合は、戻り値が使用されていることを確認してください。

Python の関数のトピックについては、別の章で詳しく説明します。

例 - シンプルな Todo リスト アプリケーション

簡単な ToDo リスト アプリケーションを作成してみましょう。このアプリケーションはリストを todo のストレージとして使用し、関数を利用してよりクリーンなコードを実現します。

最初のステップは、uuid パッケージをインポートし、todo レコードを保存するための todos というリストを作成することです。 uuid パッケージは、todo レコードの識別子 (ID) として使用されます。

apple
milk
cereal
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

その後、すべての todo レコードを取得する view_todos() 関数を作成します。すべての todo レコードは for ループを使用して取得されます。

items = ["apple","banana","mango","coffee"]

# add new item at index 1
items.insert(1,"cereal")

# retrieve all items
for item in items:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

指定された ID で todo レコードを取得する view_todo() 関数を作成します。各 todo レコードは for ループ内でチェックされ、現在の todo ID が指定された ID と等しいかどうかがチェックされます。一致する場合、ToDo レコードが表示されます。

apple
cereal
banana
mango
coffee
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

新しい todo を作成する create_todo() 関数を作成します。 todo レコードは、id と title フィールドを持つ辞書として表されます。

# create a list
drinks = ["milkshake","black tea","banana milk","mango juice"]

# update value at index 2
drinks[2] = "chocolate milk"

print(f"value at index 2: {drinks[2]}")
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

todo を更新する update_todo() 関数を作成します。この関数では、指定したIDでtodoレコードを更新します。

value at index 2: chocolate milk
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

todo を削除する delete_todo() 関数を作成します。この関数では、指定したIDでtodoレコードを削除します。

items = ["apple","banana","mango","coffee"]

# remove "mango"
items.remove("mango")

# remove item at index 1
items.remove(items[1])

print("after removed")
for item in items:
    print(item)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

最後に、アプリケーションのメイン メニューを表示するために、display_menu() という関数を作成します。

after removed
apple
coffee
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これは完全なコードです。

list_name[start:end]
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これはアプリケーションの出力です。

Python Tutorial - ata Structure

情報源

  • Python のデータ構造。

この記事が Python の学習に役立つことを願っています。ご意見がございましたら、コメント欄にご記入ください。

以上がPython チュートリアル - ata 構造の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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