pythonを説明するための共通のデータ構造


:シーケンス

    数学的には、配列は、オブジェクトの列であり、Pythonで、配列は、最も基本的なデータ構造です。インデックスを持っているその主な機能は、各要素が反復可能です。追加、乗算、および検査業務の他のメンバー、スライス、インデックスを作成することができます。Pythonでは、そこに内蔵されたインデックス6がありますが、一般的にリスト、タプル、文字列、次が導入されて使用されています。

1.一覧

    定義:このリストは、データ型、構造類似の言語cをカプセル化するために必要とされます。そして、リストは動的変数です。


    操作の基本的な方法:


    COUNT():エレメント統計がリストに表示された回数。

    インデックス():リストからの値の最初の発生のインデックス位置を見つけます。

    ()追加:リストの最後に新しいオブジェクトを追加します。

    伸びる():配列でリストの他端の追加のワンタイム値の複数。

    挿入():指定された場所内のオブジェクトのリストを挿入します。

    ポップ():リストの一つの要素(デフォルト最後の要素)の除去の値、および要素を返します。

    ()削除:最初の試合に値のリストを削除します。

    ()リバース:リスト内の要素を逆にし、リストが再コピーではありません。

    逆に():リスト逆転の要素を、再コピーリスト。

    ソート():ソートされたリストの要素は、リストが再コピーではありません。

    sortd():ソートされたリストの要素を、再コピーのリスト。

    コピー() サブリストがある場合は浅いコピーが、複雑なオブジェクトの子のための新しいラベルを貼るために、元のリストは完全に、複製されません、元の値を変更、オブジェクトの新しいコピーが変更されます。

    deepcopy():ディープコピー、1つのコピーの単一の個別のうち、それぞれ複雑なオブジェクト。これは、完全なコピーです。


2.タプル

    定義:タプルは不変で、時には不変のリストとして見ることができます。しかしジョブ「」タプルは、接続部と組み合わせることができる、及び値を含むだけリストが、使用されなければなりません。


    操作の基本的な方法:


    デル:タプルを削除します。


3.文字列

    Pythonの文字列は、最も一般的に使用されるデータ型です。あなたは引用符のペアを作成することができます。


    基本操作:


    フォーマット():フォーマット文字列。

4.一般的な動作シーケンス



    インデックス:インデックスは、いずれか、最後の位置から、ゼロから始めることができます。

    [:]:スライスは、要素の範囲にアクセスするために使用されます。

    一般的な算術演算子:配列の同じタイプは、算術又は複製配列であることができます。

    中:オブジェクト(または他のタイプ)か否かの配列のメンバー(すなわち、要素)を確認するためのオペレータのメンバー、。

    LEN、MAX、MIN:組み込み関数LEN、max及びminは順序、最大および最小の要素に含まれる要素の数を返すことができます。

5.辞書

    定義:辞書はハッシュテーブル、キーと呼ばれる要素のマッピングの名前の原則に基づいて、マッピングされています。(また、ハッシュ・テーブルとしても知られる)辞書内蔵マッピング・タイプのみのPythonです。辞書の主な要素は、任意のオブジェクトにすることができますが、オブジェクトは不変でなければなりません。たとえば、シーケンスが設定され、他の可変オブジェクトのリストではなく、辞書のキーとして。


    基本操作:


    クリア():空の辞書。

    ポップ():キーを削除し、このキーに対応する値を返します。

    コピー():辞書、一つだけのコピー(シャローコピー)をコピーします。

    アップデート(DD):辞書Dに組み込まれDDは、同じキーと、このキーの値は、値DDの新たな値とします。

    (キー、デフォルト)を取得:、キーに対応するキーの値を返します。値が存在しない場合、デフォルトが返されます。

    キー():辞書のキーの繰り返しオブジェクトのコレクションを返します。

    値は():辞書のコレクションは反復値をオブジェクトを返します。

    アイテム():辞書のキーと値のペアの繰り返しオブジェクトのコレクションを返します。

6.コレクション

    定義:配列(または他のオブジェクトの反復)によって設定された構成は、要素の順序付けられていないシーケンスが繰返さないです。


    基本操作:


    frozensetのは():オブジェクトの空のセットが固定されて作成します。

    frozenset(反復可能):イテレート可能オブジェクトを持つオブジェクトの新しい固定セットを作成します。

    セット():空のコレクションオブジェクトを作成(空集合{}を作成するために使用することができません)。

    セット(反復可能):イテレート可能オブジェクトを持つオブジェクトの新しいセットを作成します。

    (e)を追加します。セットの新しい要素eを追加します。要素が既に存在する場合、追加されません。

    (e)の削除:コレクション要素から削除し、要素がコレクション内に存在しない場合、KeyError例外エラーが生成されます。

    (e)の破棄:eが存在しないときに集合Sから削除する1つの要素eを、要素は何もしません。

    クリア():コレクション内のすべての要素をクリアします。

    コピー():コレクションの浅いコピー。

    ポップ():集合Sからランダム要素を削除し、このセットが空である場合、イニシエータKeyError例外例外。

    更新(S2):辞書を更新します。


II:高度なデータ構造

    算術演算を実行するときにPythonといくつかの先進的なデータ構造、これらのデータ構造は有用です。ここで説明します。

1.スタック

    定義:スタックが挿入のみのみ、スタック内のスタックの挿入や削除の一端からデータを削除し、リニアテーブルです。記憶スタック、すなわち、格納され、リンクされたリニア・メモリ(リンクリスト)の2種類があります。だから、要素のたびに削除がスタックに最後の要素であるので、最初のうち(LIFO)テーブル、スタックも最後として知られています。各スタックは、-1の元の値にスタックポインタを有し、常にスタックの最後の要素を指します。
    が、2つの場合のスタックのうち、スタックと、二つの方法、すなわち、プッシュ(押し)で処理し、(POP)ポップスタック変数のみスタックメモリ空間に移動する必要が、時間複雑度は、O(1)であります場合フルタイムの複雑さはまた、O(1)であるが、スタックが満杯である場合、再割り当てメモリ、およびスタック内のすべてのデータを移動し、この場合、時間複雑であるので、O(N)


    スタック内のpython:パイソン、スタックが実際にはもっと簡単なリストを達成することができ、要素はAPPENDと操作の最後に増加した、ポップの要素と操作を削除します。

    簡単に実現のリスト:

stack = []
# 向栈顶插入元素
stack.append(1)
stack.append(2)
stack.append(3)
# 删除栈顶的元素
print(stack.pop())
print(stack.pop())
print(stack.pop())

    一般的な方法:

class MyStack(object):
    def __init__(self):
        self.stack_list = []    # 自定义一个列表
        self.count = 0          # 创建一个计数器,模拟栈顶指针

    # 创建一个栈
    def create_one_stack(self):
        return self.stack_list

    # 在栈顶添加元素
    def push(self, value):
        self.stack_list.insert(0,value)
        self.count += 1         # 计数器加一

    # 删除栈顶元素
    def pop(self):
        self.stack_list.pop(0)
        self.count -= 1         # # 计数器减一

    # 返回栈顶元素值
    def stack_num(self):
        if self.count:
            return self.stack_list[0]

    #打印栈内容
    def show_all(self):
        for s in self.stack_list:
            print(s)

if __name__ == '__main__':
    m = MyStack()
    m.create_one_stack()
    # 增加栈顶元素
    m.push(1)
    m.push(2)
    m.push(3)
    print('栈顶元素为:',m.stack_num())
    print('之前的元素为:')
    m.show_all()
    # 删除栈顶元素
    m.pop()
    print('之后的元素为:')
    m.show_all()

2.キュー

    定義:キューが目の前に特別な直線状などでスタックが、削除操作許可テーブルで、挿入操作テーブルの後ろに、この表には、制限された線形演算です。末端のテールエンドと呼ばれる動作はヘッドの挿入操作と呼ぶことにする削除します。キュー循環キューここでは、キューを議論します。

    通常のキューの実装:

class Queue(object):
    def __init__(self):
        self.__list = []    # 创建一个列表

    def inQueue(self,item):
        # 从队尾入队,从队头出队
        self.__list.append(item)

    def outQueue(self):
        # 从队头出队
        return self.__list.pop(0)

if __name__ == '__main__':
    m = Queue()
    # 从队头入队
    m.inQueue(1)
    m.inQueue(2)
    # 从队尾出队
    print(m.outQueue())
    print(m.outQueue())

    両端キューが実装さ:

class Queue(object):
    def __init__(self):
        self.__list = []    # 创建一个列表

    def add_Front(self,x):
        #在列表头部添加
        self.__list.insert(0,x)

    def add_End(self,x):
        #在队列尾部添加元素
        self.__list.append(x)

    def pop_Front(self):
        #在头部删除元素
        return self.__list.pop(0)

    def pop_End(self):
        #在尾部删除元素
        return self.__list.pop()


if __name__ == '__main__':
    m = Queue()
    # 在队列头部添加元素
    m.add_Front(1)
    m.add_Front(2)
    m.add_Front(3)
    m.add_Front(4)
    # 在队列尾部添加元素
    m.add_End(5)
    m.add_End(6)
    m.add_End(7)
    m.add_End(8)
    # 在列表头部和尾部删除元素
    print(m.pop_Front())
    print(m.pop_Front())
    print(m.pop_End())
    print(m.pop_End())

    これらは、一般的なデータ構造だけでなく、他のあまり一般的に使用されるデータ構造とアルゴリズムを使用するPythonの知識ですが、これらのデータ構造を表示するようになります後、多くの場合、乗数効果を達成するために組み合わせます。

    あなたがこの記事を楽しんでいる場合は、賞賛をポイントしたい、または右、多くの支持に報酬関数をクリックして、私はあなたがゆっくりと内側の海洋技術の美しさと喜びを発見願って、ありがとうございました。

おすすめ

転載: www.cnblogs.com/ITXiaoAng/p/11581396.html