Maison > Article > développement back-end > Description détaillée du module intégré Collections de Python
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!