>백엔드 개발 >파이썬 튜토리얼 >Python의 컬렉션 내장 모듈에 대한 자세한 설명

Python의 컬렉션 내장 모듈에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-03-15 14:33:451167검색

ccollections는 python에 내장된 모듈입니다. 소스 코드는 Lib/collections/init.py에 있습니다.

deque 컨테이너object

는 from collections import deque를 통해 도입됩니다. deque 컨테이너 객체를 생성할 때 매개변수를 Iterable 객체(예: Tuple, list, str) 또는 maxlen=x(int ​​유형) 또는 초기화의 경우 None입니다.

deque 컨테이너는 스레드안전성을 지원합니다. append 또는 pop을 통해 deque의 양쪽 끝에서 요소를 삽입하거나 제거할 때 시간 복잡도는 O(1)입니다. 리스트 객체와 비교해 리스트에도 동일한 api가 있어 동일한 기능을 구현하지만, pop(0)이나 insert(0, x) 등 리스트에 대한 연산의 경우 시간 복잡도가 O입니다. (N) .

deque를 초기화할 때 maxlen이 선언되지 않거나 maxlen=None이 선언되면 deque 컨테이너는 원하는 수의 요소를 보유할 수 있습니다. 그렇지 않으면 deque 컨테이너는 제한된 길이의 요소 컨테이너로 정의됩니다.

컨테이너의 요소 수가 설정된 maxlen에 도달하면 새 요소가 추가되면 추가된 요소의 반대쪽 끝에서 동일한 수의 요소가 제외되므로 현재 요소의 요소가 보장됩니다. deque 모두 새로 추가된 요소입니다.

deque 객체함수

append(x)

appendleft(x)

clear()

copy()

count(x): 컨테이너에서 x 값을 갖는 요소의 수를 반환합니다.

extend(iterable)

extendleft(iterable)

index(x): 컨테이너 요소에서 x의 첫 번째 값을 찾습니다. index , 존재하지 않으면 ValueError 예외 발생

insert(idx, x)

pop()

popleft()

remove(x)

reverse(): 컨테이너의 요소를 뒤집고 None

rotate(n)

deque 객체 읽기 전용 속성을 ​​반환합니다.

maxlen

위의 객체 함수 외에도 deque 객체도 Iterable 객체이므로 len(deque);reversed(deque);copy.copy(deque );copy와 같은 함수도 작동합니다. 마찬가지로 in 연산자 는 deque 작업을 순회할 때에도 사용됩니다. 컨테이너. 컨테이너의 임의 요소에 대해 작업을 수행하는 경우 목록을 사용하는 것이 좋습니다.

demo

파일에서 Python 문자열 이 있는 줄의 내용과 이 줄의 처음 세 줄

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의 컬렉션 내장 모듈에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.