Python の Collections 組み込みモジュールの詳細な説明

高洛峰
リリース: 2017-03-15 14:33:45
オリジナル
1125 人が閲覧しました

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)

pop()popleft()

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!