python 双端队列

创建deque

# 创建空deque
        my_deque = deque()
# 将队列变为deque
        my_deque = deque([1, 2, 3])

成员检测

# 成员检测:使用 in 和 not in 运算符来检查 deque 中是否包含某个元素,
        if 2 in my_deque:
            print("2 is in the deque")

两端添加元素

# append(item):在 deque 的右端添加一个元素。
        my_deque.append(4)
        print(my_deque)  # deque([1, 2, 3, 4])
# appendleft(item):在 deque 的左端添加一个元素。
        my_deque.appendleft(0)
        print(my_deque)  # 输出:deque([0, 1, 2, 3,4])

清空deque

# 清空deque
        my_deque.clear()
        print(my_deque)  # 输出:deque([])

复制deque

        my_deque = deque([1, 2, 3])
        new_deque = my_deque.copy()
        print(new_deque)  # 输出 deque([1, 2, 3])

元素计数

count = my_deque.count(2)
print(count)  # 输出:1

 扩展deque

# extend(iterable):在 deque 的右端添加可迭代对象中的所有元素。
        my_deque.extend([4, 5, 6])
        print(my_deque)  # 输出:deque([1, 2, 3, 4, 5, 6])
# extendleft(iterable):在 deque 的左端添加可迭代对象中的所有元素,注意顺序。
# 在 extendleft(iterable) 方法中,参数 iterable 中的元素会被逐个添加到 deque 的左端。由于 deque 是一种双端队列,元素添加到左端后会被放置在已有元素的前面。
        my_deque = deque([3, 4, 5])
        my_deque.extendleft([2, 1, 0])
        print(my_deque)  # 输出:deque([0, 1, 2, 3, 4, 5])

 获取元素的索引

# index(item[, start[, end]]):返回 deque 中第一个匹配项的索引。
        my_deque = deque([1, 2, 3, 2])
        index = my_deque.index(2)
        print(index)  # 输出:1

在指定位置插入元素

# insert(index, item):在指定索引位置插入一个元素。
        my_deque.insert(1, 4)
        print(my_deque)  # 输出:deque([1, 4, 2, 3, 2])

移除并返回元素

# pop():从 deque 的右端移除并返回一个元素。
        item = my_deque.pop()
        print(item)  # 输出:2
        print(my_deque)  # 输出:deque([1, 4, 2, 3])
# popleft():从 deque 的左端移除并返回一个元素。
        item = my_deque.popleft()
        print(item)  # 输出:1
        print(my_deque)  # 输出:deque([4, 2, 3])

移除指定元素

# remove(item):从 deque 中移除第一个匹配的元素。如果移除不存在的元素,则会报错。
        my_deque.remove(2)
        print(my_deque)  # 输出:deque([4, 3])

反转deque

 # reverse():反转 deque 中的元素顺序。
        my_deque.reverse()
        print(my_deque)  # 输出:deque([3, 4])

循环移动元素

# rotate(n=1):循环移动 deque 中的元素,正数表示向右移动,负数表示向左移动。
        my_deque = deque([1, 2, 3, 4, 5])
        my_deque.rotate(2)
        print(my_deque)  # 输出:deque([4, 5, 1, 2, 3])

        my_deque = deque([1, 2, 3, 4, 5])
        my_deque.rotate(-2)
        print(my_deque)  # 输出:deque([3, 4, 5, 1, 2])

设置最大长度

# 可以通过在创建 deque 时指定 maxlen参数来设置最大长度。一旦 deque 达到最大长度,再添加元素时会从另一端删除元素。
        my_deque = deque(maxlen=3)
        my_deque.append(1)
        my_deque.append(2)
        my_deque.append(3)
        print(my_deque)  # 输出:deque([1, 2, 3], maxlen=3)

        my_deque.append(4)
        print(my_deque)  # 输出:deque([2, 3, 4], maxlen=3)

 

posted on 2023-12-15 00:36  mlllily  阅读(2)  评论(0编辑  收藏  举报