Python의 컬렉션 모듈: deque
Deque, Double Ended Queue의 줄임말
양쪽 끝에 빠른 추가 및 팝이 있는 목록과 같은 컨테이너입니다.
데크는 스택과 큐의 일반화입니다.
Deques는 양쪽 방향에서 거의 동일한 O(1) 성능으로
deque
의 양쪽에서 스레드 안전하고 메모리 효율적인 추가 및 팝을 지원합니다.데크 가져오기
from collections import deque
deque 컨테이너 생성
""" deques can be created from any iterable
using : "deque(iterable)" syntax
"""
d1 = deque([1, 2, 3, 3, 4, 5]) # from list
d2 = deque(("Kathan", 19, 'idc')) # from tuple
d3 = deque("Followme") # from string
# dictionary is an iterable of keys btw,
d4 = deque({"name": "R", "age": 1}) # from dict
print(d1, d2, d3, d4, sep='\n')
"""OUTPUT
deque([1, 2, 3, 3, 4, 5])
deque(['Kathan', 19, 'idc'])
deque(['F', 'o', 'l', 'l', 'o', 'w', 'm', 'e'])
deque(['name', 'age'])
"""
maxlen 인수
deque의 크기를 결정하는 선택적 인수
maxlen
를 전달할 수도 있습니다.deque(iterable, maxlen)
📑If
maxlen
is not specified or is None, deques may grow to an arbitrary length.
그렇지 않으면 deque는 지정된 최대 길이로 제한됩니다. 제한된 길이의 deque가 가득 차면 새 항목이 추가될 때 반대쪽 끝에서 해당 수의 항목이 삭제됩니다.
인스턴스화 후 deque를 업데이트하는 방법을 안다면 이 작업이 더 이해가 될 것입니다. 지금부터 이러한 방법에 대해 논의해 보겠습니다.
추가, appendleft , pop , popleft 방법
my_deque = deque([1, 2, 3, 4, 5])
# append(y) => appends y to right side
my_deque.append(6)
print("After my_deque.append(6) =>", my_deque)
# appendleft(y) => appends y to left side
my_deque.appendleft(0)
print("After my_deque.appendleft(0) =>", my_deque)
# pop() => Remove and return an element from the right side
my_deque.pop()
print("After my_deque.pop()=>", my_deque)
# popleft() =>Remove and return an element from the left side
my_deque.popleft()
print("After my_deque.popleft()=>", my_deque)
"""OUTPUT
After my_deque.append(6) => deque([1, 2, 3, 4, 5, 6])
After my_deque.appendleft(0) => deque([0, 1, 2, 3, 4, 5, 6])
After my_deque.pop()=> deque([0, 1, 2, 3, 4, 5])
After my_deque.popleft()=> deque([1, 2, 3, 4, 5])
"""
📑 The important part here is that both append methods don't return anything, they perform inplace modifications!
extend , extendleft 메서드
my_deque = deque([1, 2, 3])
"""extend(iterable)
Extend the right side of the deque by
appending elements from the iterable argument
"""
my_deque.extend([4, 5, 6])
print("After extend:", my_deque)
"""extendleft(iterable)
Extend the left side of the deque by appending
elements from iterable.
"""
my_deque.extendleft([0, -1, -2])
print("After extendleft:",my_deque)
"""OUTPUT
After extend: deque([1, 2, 3, 4, 5, 6])
After extendleft: deque([-2, -1, 0, 1, 2, 3, 4, 5, 6])
"""
📑 If you notice in the
extendleft(iterable)
method, the elements are inserted in reversed order i.e. the last element of input iterable is the first in our updateddeque
. This is because we perform series of left appends by taking elements from start to end (from our iterable).
더 많은 방법
🔮
deque
is a very powerful container, and it has loads of functionalities! I have discussed most of them here but feel free to check out the documentation for some extra goodies.
이것으로 컬렉션 모듈에 대한 논의를 마쳤습니다. 광범위한 보도를 즐기셨기를 바랍니다 :) 다른 모험을 위해 저와 다시 함께 하시길 바랍니다!
그때까지 프로그래밍을 즐기세요 🥳
참조
https://docs.python.org/3/library/collections.html#module-collections
Reference
이 문제에 관하여(Python의 컬렉션 모듈: deque), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kathanvakharia/python-s-collections-module-deque-5b7g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)