Maison  >  Article  >  développement back-end  >  Description détaillée du module intégré Collections de Python

Description détaillée du module intégré Collections de Python

高洛峰
高洛峰original
2017-03-15 14:33:451151parcourir

ccollections est un module intégré de python Le code source se trouve dans Lib/collections/init.py.

deque conteneurobjet

est introduit via les collections import deque Lors de la création d'un objet conteneur deque, vous pouvez définir le paramètre sur un objet itérable (tel qu'un tuple, list, str) ou maxlen=x (type int) ou None pour l'initialisation.

le conteneur deque prend en charge le threadsafety Lors de l'insertion ou de la suppression d'éléments des deux extrémités de deque via append ou pop, la complexité temporelle est O(1) . Par rapport à l'objet liste, la liste a également la même api pour implémenter la même fonction, mais pour les opérations sur la liste telles que pop(0) ou insert(0, x), la complexité temporelle est O (n) .

Si maxlen n'est pas déclaré ou si maxlen=None est déclaré lors de l'initialisation de deque, alors le conteneur deque peut contenir n'importe quel nombre d'éléments. Sinon, le conteneur deque sera défini comme un conteneur d'éléments de longueur limitée.

Une fois que le nombre d'éléments dans le conteneur atteint le maximum défini, lorsque de nouveaux éléments sont ajoutés, le même nombre d'éléments sera exclu de l'autre extrémité de l'élément ajouté, garantissant ainsi que les éléments de l'élément actuel deque Tous sont des éléments nouvellement ajoutés.

objet dequefonction

append(x)

appendgauche(x)

clear()

copy()

count(x) : renvoie le nombre d'éléments de valeur x dans le conteneur

extend(iterable)

extendleft(iterable)

index(x) : trouver la première valeur de x dans l'élément conteneur index , s'il n'existe pas, lancez l'exception ValueError

insert(idx, x)

pop()

popleft()

remove(x)

reverse() : retourne les éléments dans le conteneur et renvoie Aucun

rotate(n)

deque object en lecture seule attribut

maxlen

En plus des fonctions d'objet ci-dessus, puisque l'objet deque est également un objet itérable, alors len(deque);reversed(deque);copy.copy(deque );copy. Des fonctions telles que deepcopy(deque) fonctionnent également. De même, l'opérateur in est également utilisé lors du parcours de l'opération deque. L'opération de découpage deque[-1] peut également renvoyer le dernier élément du. récipient. Si vous opérez sur des éléments aléatoires dans le conteneur, il est recommandé d'utiliser une liste.

démo

Obtenez le contenu de la ligne de la chaîne python dans le fichier, et les trois premières lignes de cette ligne

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)

texte d'entrée Le contenu du fichier est

c#
c
c++
javascript
python
java
delphi
python
golang
perl
css
html
python

et la sortie du code est

c
c++
javascript
python

python
java
delphi
python

perl
css
html
python


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn