- Python 基础
- Python - 首页
- Python - 概述
- Python - 历史
- Python - 特性
- Python vs C++
- Python - Hello World 程序
- Python - 应用领域
- Python - 解释器
- Python - 环境搭建
- Python - 虚拟环境
- Python - 基本语法
- Python - 变量
- Python - 数据类型
- Python - 类型转换
- Python - Unicode 系统
- Python - 字面量
- Python - 运算符
- Python - 算术运算符
- Python - 比较运算符
- Python - 赋值运算符
- Python - 逻辑运算符
- Python - 位运算符
- Python - 成员运算符
- Python - 身份运算符
- Python - 运算符优先级
- Python - 注释
- Python - 用户输入
- Python - 数字
- Python - 布尔值
- Python 控制语句
- Python - 控制流
- Python - 决策
- Python - if 语句
- Python - if else
- Python - 嵌套 if
- Python - Match-Case 语句
- Python - 循环
- Python - for 循环
- Python - for-else 循环
- Python - while 循环
- Python - break 语句
- Python - continue 语句
- Python - pass 语句
- Python - 嵌套循环
- Python 函数与模块
- Python - 函数
- Python - 默认参数
- Python - 关键字参数
- Python - 仅关键字参数
- Python - 位置参数
- Python - 仅位置参数
- Python - 可变参数
- Python - 变量作用域
- Python - 函数注解
- Python - 模块
- Python - 内置函数
- Python 字符串
- Python - 字符串
- Python - 字符串切片
- Python - 修改字符串
- Python - 字符串连接
- Python - 字符串格式化
- Python - 转义字符
- Python - 字符串方法
- Python - 字符串练习
- Python 列表
- Python - 列表
- Python - 访问列表元素
- Python - 修改列表元素
- Python - 添加列表元素
- Python - 删除列表元素
- Python - 遍历列表
- Python - 列表推导式
- Python - 排序列表
- Python - 复制列表
- Python - 合并列表
- Python - 列表方法
- Python - 列表练习
- Python 元组
- Python - 元组
- Python - 访问元组元素
- Python - 更新元组
- Python - 解包元组
- Python - 遍历元组
- Python - 合并元组
- Python - 元组方法
- Python - 元组练习
- Python 集合
- Python - 集合
- Python - 访问集合元素
- Python - 添加集合元素
- Python - 删除集合元素
- Python - 遍历集合
- Python - 合并集合
- Python - 复制集合
- Python - 集合运算符
- Python - 集合方法
- Python - 集合练习
- Python 字典
- Python - 字典
- Python - 访问字典元素
- Python - 修改字典元素
- Python - 添加字典元素
- Python - 删除字典元素
- Python - 字典视图对象
- Python - 遍历字典
- Python - 复制字典
- Python - 嵌套字典
- Python - 字典方法
- Python - 字典练习
- Python 数组
- Python - 数组
- Python - 访问数组元素
- Python - 添加数组元素
- Python - 删除数组元素
- Python - 遍历数组
- Python - 复制数组
- Python - 反转数组
- Python - 排序数组
- Python - 合并数组
- Python - 数组方法
- Python - 数组练习
- Python 文件处理
- Python - 文件处理
- Python - 写入文件
- Python - 读取文件
- Python - 重命名和删除文件
- Python - 目录
- Python - 文件方法
- Python - OS 文件/目录方法
- Python - OS 路径方法
- 面向对象编程
- Python - OOPs 概念
- Python - 类与对象
- Python - 类属性
- Python - 类方法
- Python - 静态方法
- Python - 构造函数
- Python - 访问修饰符
- Python - 继承
- Python - 多态
- Python - 方法重写
- Python - 方法重载
- Python - 动态绑定
- Python - 动态类型
- Python - 抽象
- Python - 封装
- Python - 接口
- Python - 包
- Python - 内部类
- Python - 匿名类和对象
- Python - 单例类
- Python - 包装类
- Python - 枚举
- Python - 反射
- Python 错误与异常
- Python - 语法错误
- Python - 异常
- Python - try-except 块
- Python - try-finally 块
- Python - 抛出异常
- Python - 异常链
- Python - 嵌套 try 块
- Python - 用户自定义异常
- Python - 日志记录
- Python - 断言
- Python - 内置异常
- Python 多线程
- Python - 多线程
- Python - 线程生命周期
- Python - 创建线程
- Python - 启动线程
- Python - 连接线程
- Python - 线程命名
- Python - 线程调度
- Python - 线程池
- Python - 主线程
- Python - 线程优先级
- Python - 守护线程
- Python - 线程同步
- Python 同步
- Python - 线程间通信
- Python - 线程死锁
- Python - 中断线程
- Python 网络编程
- Python - 网络编程
- Python - 套接字编程
- Python - URL 处理
- Python - 泛型
- Python 库
- NumPy 教程
- Pandas 教程
- SciPy 教程
- Matplotlib 教程
- Django 教程
- OpenCV 教程
- Python 杂项
- Python - 日期与时间
- Python - 数学
- Python - 迭代器
- Python - 生成器
- Python - 闭包
- Python - 装饰器
- Python - 递归
- Python - 正则表达式
- Python - PIP
- Python - 数据库访问
- Python - 弱引用
- Python - 序列化
- Python - 模板
- Python - 输出格式化
- Python - 性能测量
- Python - 数据压缩
- Python - CGI 编程
- Python - XML 处理
- Python - GUI 编程
- Python - 命令行参数
- Python - 文档字符串
- Python - JSON
- Python - 发送邮件
- Python - 扩展
- Python - 工具/实用程序
- Python - GUIs
- Python 高级概念
- Python - 抽象基类
- Python - 自定义异常
- Python - 高阶函数
- Python - 对象内部
- Python - 内存管理
- Python - 元类
- Python - 使用元类进行元编程
- Python - 模拟和存根
- Python - Monkey Patching
- Python - 信号处理
- Python - 类型提示
- Python - 自动化教程
- Python - Humanize 包
- Python - 上下文管理器
- Python - 协程
- Python - 描述符
- Python - 诊断和修复内存泄漏
- Python - 不可变数据结构
- Python 有用资源
- Python - 问答
- Python - 在线测验
- Python - 快速指南
- Python - 参考
- Python - 速查表
- Python - 项目
- Python - 有用资源
- Python - 讨论
- Python 编译器
- NumPy 编译器
- Matplotlib 编译器
- SciPy 编译器
Python collections.deque
在 Python 中,**deque()** 是一种数据类型,它返回一个新的 deque 对象,该对象使用来自可迭代对象的 数据从左到右初始化(使用 append())。如果未指定可迭代对象,则新的 deque 为空。
**deque** 使用 **collections** 模块实现。当我们需要执行更快的操作,例如追加和弹出元素时,我们更倾向于使用 **deque**,因为它的时间复杂度为 O(1),而 **list** 的时间复杂度为 O(n)。
语法
以下是 Python **deque()** 类的语法:
class collections.deque([iterable[, maxlen]])
参数
此数据类型接受可迭代对象作为参数。
返回值
此数据类型返回 **
示例
以下是 Python **deque()** 类的基本示例:
from collections import deque d = deque('xyz') print(d)
以下是上述代码的输出:
deque(['x', 'y', 'z'])
deque 中的方法
以下是 deque() 类中存在的方法:
方法 | 功能 |
---|---|
append(x) | 将 x 添加到 deque 的右侧 |
appendleft(x) | 将 x 添加到 deque 的左侧 |
clear() | 删除 deque 中的所有元素,使其长度为 0 |
copy() | 创建 deque 的浅拷贝。 |
count(x) | 计算 deque 中等于 x 的元素个数 |
extend(iterable) | 通过追加来自 iterable 参数的元素来扩展 deque 的右侧 |
extendleft(iterable) | 通过追加来自 iterable 的元素来扩展 deque 的左侧。 |
index(x[, start[, stop]]) | 返回 x 在 deque 中的位置(在索引 start 或之后,在索引 stop 之前)。返回第一个匹配项,如果未找到则引发 ValueError。 |
insert(i, x) | 在位置 i 将 x 插入到 deque 中 |
pop() | 删除并返回 deque 右侧的一个元素 |
popleft() | 删除并返回 deque 左侧的一个元素。如果没有元素,则引发 IndexError。 |
rotate(n=1) | 将 deque 向右旋转 n 步。如果 n 为负数,则向左旋转 |
maxlen | deque 的最大大小,如果无界则为 None |
remove(value) | 删除 value 的第一次出现。如果未找到,则引发 ValueError。 |
reverse() | 就地反转 deque 的元素,然后返回 None。 |
Python deque.append() 方法
我们可以使用 **append()** 将元素添加到 deque 中。元素添加到 deque 的右端。**appendleft()** 用于将元素添加到 deque 的左端。一次只能将单个元素添加到 deque 中。
示例
在这里,我们创建了 deque 并使用 **append()** 在 deque 的右侧添加了一个元素。使用 **appendleft()**,我们在 deque() 的左侧添加了一个元素:
import collections # initializing deque deque1 = collections.deque([1, 2, 3]) print("deque: ", deque1) # using append() to insert element at right end # inserts 100 at the end of deque deque1.append(100) # printing modified deque print("The deque after appending at right : ",deque1) # using appendleft() to insert element at left end # inserts 21 at the beginning of deque deque1.appendleft(21) # printing modified deque print("The deque after appending at left : ",deque1)
以下是上述代码的输出:
deque: deque([1, 2, 3]) The deque after appending at right : deque([1, 2, 3, 100]) The deque after appending at left : deque([21, 1, 2, 3, 100])
Python deque.pop() 方法
deque 中的 **pop()** 方法用于从 deque 的末尾删除元素。**popleft()** 用于删除 deque 左端的元素。
示例
这里,我们使用pop()方法删除了右侧末尾的元素。使用popleft()方法,我们删除了双端队列左侧末尾的元素。此方法一次只删除一个元素。
import collections # initializing deque deque_1 = collections.deque([60, 11, 42, 93, 74]) print("deque: ", deque_1) # using pop() to delete element from right end of deque deque_1.pop() # printing modified deque print("The deque after deleting from right : ",deque_1) # using popleft() to delete element from left deque_1.popleft() # printing modified deque print("The deque after deleting from left : ",deque_1)
以下是上述代码的输出:
deque: deque([60, 11, 42, 93, 74]) The deque after deleting from right : deque([60, 11, 42, 93]) The deque after deleting from left : deque([11, 42, 93])
Python deque.extend() 方法
deque 的extend()方法用于在双端队列的右侧末尾添加多个元素。extendleft()方法用于在双端队列的左侧末尾添加元素。
示例
以下是此类的另一个示例:
import collections # initializing deque deque_1 = collections.deque([1, 2, 3]) # using extend() to add numbers to right end deque_1.extend([40,50]) # printing modified deque print ("The deque after extending deque at right end :",deque_1) # using extendleft() to add numbers to left end deque_1.extendleft([70,80]) # printing modified deque print ("The deque after extending deque at left end: ",deque_1)
以下是上述代码的输出:
The deque after extending deque at right end : deque([1, 2, 3, 40, 50]) The deque after extending deque at left end: deque([80, 70, 1, 2, 3, 40, 50])
Python deque.rotate() 方法
rotate()方法根据参数中指定的数字旋转双端队列。如果指定的数字为负数,则向左旋转;否则向右旋转。
示例
这里,我们创建了一个双端队列并在其上执行了旋转操作。当我们传递一个负数时,从左侧旋转;当传递一个正数时,从右侧旋转:
from collections import deque #defined deque deque_1=deque([1,2,3,4]) #left rotation of deque deque_1.rotate(-1) print("Left Rotation Of deque :",deque_1) #right rotating of deque deque_1.rotate(2) print("Right Rotation Of deque :",deque_1)
以下是上述代码的输出:
Left Rotation Of deque : deque([2, 3, 4, 1]) Right Rotation Of deque : deque([4, 1, 2, 3])