Pythonによるデータ構造とアルゴリズム入門.
6236 ワード
データ構造
Pythonには、以下の4つの組み込みデータ構造が組み込まれています:
リスト、辞書、タプルとセット.
まず
リスト
リストは、どんなタイプのオブジェクトのためにでも使われることができます.数から文字列とリストも.
リストはブラケットで定義されている-
[]
numbers = [4,5,6]
print(type(numbers))
output:
<class 'list'>
リストはまた、キーワードlist()
を使用して定義することができますnumbers = list()
numbers.append(4)
numbers.append(5)
numbers.append(6)
print(numbers)
[4, 5, 6]
リストで使用される組み込みメソッドのセットがあります.append()
-リストの末尾に要素を追加するclear()
-リストの要素を削除するcopy()
-リストのコピーを返すpop()
-指定した位置に要素を削除するinsert()
-指定した位置に要素を追加するreverse()
-リストの順序を逆にするsort()
-ソートリストremove
-指定した値で最初の項目を削除するcount
-指定した値を持つ要素の数を返します.辞書
他の言語のhashmapsと呼ばれる辞書.キー、値のペアで構成されます.keyは一意で不変のオブジェクトです.
各キーと値の組はコロンで区切られます.
辞書はカーリーブラケット
{}
で定義される.Dict = {'name': 'Eric', 'age': 19}
また、組み込みのPython辞書メソッドのセットもありますclear()
-辞書からすべての項目を削除するcopy()
-辞書のコピーを返すget()
-指定したパラメータの値を取得するitems()
-キー値形式で辞書のすべての項目を取得するpopitem()
-辞書内の最後の要素を削除して返すupdate()
-キー値ペアで辞書を更新するkeys()
-辞書のキーを含むリストを返すvalues()
-辞書内のすべての値のリストを返すタプル
タプルは命令され、不変です.
重複はタプルで許可されます.
タプルは、ブラケット
()
で定義され、インデックスされます.mytuple = ("cat", "mouse", "cow", "chicken")
タプルはインデックスを通じてアクセスできますmytuple = ("cat", "mouse", "cow", "chicken")
print(mytuple[1])
# output:
mouse
集合セットは順序なしで、不変で、インデックスなしです.
重複は集合で許されません
セットはカーリーブラケット
{}
で定義されますmyset = {"cat", "mouse", "cow", "chicken"}
組み込みの設定メソッドがあります.add()
-要素に要素を追加するclear()
-セットからすべての要素を取り除きますcopy()
-セットのコピーを返すdiscard()
-指定した項目を削除するpop()
-セットから要素を削除するupdate()
-別のセットでセットを更新しますremove()
-指定した項目を削除するアルゴリズム
キュー
キューは、両側で開いている抽象的なデータ構造であるため、最初のFirst Out Out Base FIFOを使用する.
キューには二つの端がある
front
とrear
.キューに含まれる2つの操作は
enqueue
とdequeue
である.dequeueはアイテムを削除するプロセスである間、Enqueueはキューにアイテムを挿入することを含みます.
キューに含まれるメソッドは以下のようになります.
push(item)
-キューに要素を挿入するために使用します.pop(item)
-使用してキューから要素を削除します.get()
-キューから要素を抽出するために使用します.empty()
-キューが空かどうかチェックする.full()
-キューが満杯かどうかを確認します.リストを用いたキューの実装
q = []
def Enqueue():
if len(q) == size:
print('Queue is full')
else:
number = input('Enter numbers-:')
q.append(number)
print(number,'number added to the queue')
def dequeue():
if len(queue) == 0:
print('queue is empty')
else:
del = q.pop(0)
print('Element removed',del)
def display():
size = input('Enter size of the queue')
while True:
print("Select the Operation:1.Add 2.Delete 3. Display 4. Quit")
choice=int(input())
if choice==1:
Enqueue()
elif choice==2:
dequeue()
elif choice==3:
display()
elif choice==4:
break
else:
print("Invalid Choice =(")
スタックスタックは、最後のin first first orderで項目を格納する線形データ構造です.
スタックは片側で開いているので、新しいアイテムは片端に追加され、その端からのみ削除されます.
スタックに関連するメソッドは以下の通りです.
empty()
-スタックが空かどうかを返します.size()
-スタックのサイズを返します.top()
-スタックの最上位要素への参照を返します.push()
-スタックの上部に項目を挿入します.pop()
-スタックの最上位要素を削除します.リストの実装
stack = []
#append() used to push items into stack
stack.append('a')
stack.append('b')
stack.append('c')
print(stack)
#pop() removes items from stack
print(stack.pop())
print(stack.pop())
print(stack.pop())
#elements after being popped
print(stack)
連結リストリンクリストは、リンクを介して接続されるデータ要素のシーケンスです.
各リンクは別のリンクへの接続を含んでいます.
Pythonはリンクリストを標準ライブラリに持っていません.
第1のノードはまた、ヘッドとして知られている.リストを横断するリファレンスとして使用されます.
最後のノードはNULLを指します.
リンクリストの種類
シングルリンクリスト-フォワード方向
二重リンクリスト-前後方向において横断される
循環単一リンクリスト-最後の要素は、次の
循環二重連結リスト-最後の要素は、次のように最初の要素へのリンクを含み、最初の要素は前の要素の最後の要素のリンクを含んでいます.
Implementation of nodes using classes
class Node:
#constructor to create a new node
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
#constructor to create an empty LinkedList
def __init__(self):
self.head = None
# create an empty LinkedList
MyList = LinkedList()
#Add first node.
first = Node(1)
#linking with head node
MyList.head = first
#Add second node.
second = Node(2)
#linking with first node
first.next = second
#Add third node.
third = Node(3)
#linking with second node
second.next = third
この記事を読んでくれてありがとう.私は、それがデータ構造とアルゴリズムを理解している大きな援助であることを望みます.Reference
この問題について(Pythonによるデータ構造とアルゴリズム入門.), 我々は、より多くの情報をここで見つけました https://dev.to/am_eric/introduction-to-data-structures-and-algorithms-with-python-51fpテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol