ccollections は python の組み込みモジュールです。ソース コードは Lib/collections/init.py にあります。このモジュールはユニバーサル データ コンテナーを提供します。
deque コンテナオブジェクト
は、from collections import deque を通じて導入されます。deque コンテナ オブジェクトを作成するときに、パラメーターを Iterable オブジェクト (タプル、リスト、str など) または maxlen=x (int 型) に設定できます。 ) または初期化なし。
deque コンテナは、スレッド safety をサポートします。append または Pop を介して deque の両端から要素を挿入または削除する場合、時間計算量は O(1) です。 list オブジェクトと比較すると、list にも同じ関数を実装するための同じ api がありますが、pop(0) や insert(0, x) などの list に対する操作の時間計算量は O(n) です。
deque の初期化時に maxlen が宣言されていない場合、または maxlen=None が宣言されている場合、deque コンテナーは任意の数の要素を保持できます。それ以外の場合、deque コンテナーは長さの制限された要素コンテナーとして定義されます。
コンテナ内の要素の数が設定された maxlen に達すると、新しい要素が追加されると、追加された要素のもう一方の端から同じ数の要素が除外されます。これにより、現在の両端キュー内のすべての要素が確実に除外されます。最新の追加要素。
deque objectfunction
append(x)
appendleft(x)
clear()
copy()
count(x): の値を返します。 Raise ValueError 例外の要素の数
insert(idx, x)
remove(x)reverse(): コンテナ内の要素を反転し、None を返します
rotate(n)
deque オブジェクトには読み取り専用のプロパティがあります
maxlen 上記のオブジェクト関数に加えて、deque オブジェクトは Iterable オブジェクトでもあるため、len(deque);reversed(deque); copy.copy(deque);copy.deepcopy(deque) 他の関数も同様に、deque 操作を走査するときに in演算子
も使用され、スライス操作 deque[-1] も、最後の要素を返すことができます。容器。コンテナ内のランダムな要素を操作する場合は、リストを使用することをお勧めします。 demoファイル内の Python string
が配置されている行の内容と、この行の最初の 3 行を取得しますfrom collections import deque def search(lines, pattern, maxlen): pre_lines = deque(maxlen=maxlen) for line in lines: if pattern in line: yield line, pre_lines pre_lines.append(line) if name == 'main': with(open('./test.txt')) as f: for line, pre_lines in search(f, 'python', 3): for pre_line in pre_lines: print(pre_line, end='') print(line)入力テキスト ファイルの内容は
c# c c++ javascript python java delphi python golang perl css html pythonコードによる出力は
c c++ javascript python python java delphi python perl css html pythonです
以上がPython の Collections 組み込みモジュールの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。