deque 位于 collections 包下,主要包含以下方法:
class deque(MutableSequence[_T], Generic[_T]):
@property
def maxlen(self) -> Optional[int]: ...
def __init__(self, iterable: Iterable[_T] = ...,
maxlen: Optional[int] = ...) -> None: ...
def append(self, x: _T) -> None: ...
def appendleft(self, x: _T) -> None: ...
def clear(self) -> None: ...
if sys.version_info >= (3, 5):
def copy(self) -> deque[_T]: ...
def count(self, x: _T) -> int: ...
def extend(self, iterable: Iterable[_T]) -> None: ...
def extendleft(self, iterable: Iterable[_T]) -> None: ...
def insert(self, i: int, x: _T) -> None: ...
def index(self, x: _T, start: int = ..., stop: int = ...) -> int: ...
def pop(self, i: int = ...) -> _T: ...
def popleft(self) -> _T: ...
def remove(self, value: _T) -> None: ...
def reverse(self) -> None: ...
def rotate(self, n: int) -> None: ...
简单介绍一下栈、队列和双端队列
栈:只允许在一端进行插入、删除操作,这一端被称为栈顶(top),另一端则被称为栈底(bottom),从栈顶插入一个元素被称为进栈(push),将一个元素插入栈顶被称为“压入栈”,从栈顶删除一个元素被称为出栈(pop)。
栈队列:它只允许在表的前端(front)进行删除操作,在表的后端(rear)进行插入操作。进行插入操作的端被称为队尾,进行删除操作的端被称为队头。
队列双端队列:允许在两端同时进行插入、删除操作
双端队列from collections import deque
# deque当成栈
stack = deque(('Kotlin', 'Python'))
# 元素入栈
stack.append('Erlang')
stack.append('Swift')
print('stack中的元素:', stack) # deque(['Kotlin', 'Python', 'Erlang', 'Swift'])
# 元素出栈,后添加的元素先出栈
print(stack.pop()) # Swift
print(stack.pop()) # Erlang
print(stack) # deque(['Kotlin', 'Python'])
# deque 当成队列,使用append入队列,popleft出队列
from collections import deque
q = deque(('Kotlin', 'Python'))
# 元素加入队列
q.append('Erlang')
q.append('Swift')
print('q中的元素:', q) # q中的元素: deque(['Kotlin', 'Python', 'Erlang', 'Swift'])
# 元素出队列,先添加的元素先出队列
print(q.popleft()) # Kotlin
print(q.popleft()) # Python
print(q) # deque(['Erlang', 'Swift'])
# deque 的rotate() 方法,该方法的作用是将队列的队尾元素移动到队头,使之首尾相连
q = deque(range(5))
print('q中的元素:', q)
# 执行旋转,使之首尾相连
q.rotate()
print('q中的元素:', q)
# 再次执行旋转,使之首尾相连
q.rotate()
print('q中的元素:', q)
网友评论