美文网首页
python之队列(deque模块)

python之队列(deque模块)

作者: ATNOW | 来源:发表于2019-12-30 14:09 被阅读0次

    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)
    

    相关文章

      网友评论

          本文标题:python之队列(deque模块)

          本文链接:https://www.haomeiwen.com/subject/zcqmoctx.html