- 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 模块
Python 的 collections 模块包含不同类型的 容器。容器是一个保存不同元素的对象,可以访问元素并在对象上迭代。它包含列表、字典、集合等容器,为了提高这些容器的功能,引入了 collections 模块。
collections 模块为内置数据类型(如列表、元组、字典和集合)提供了替代方案。在某些情况下,它提供的额外数据结构和操作比内置类型更高效。
在下表中,我们可以找到不同的容器及其功能:
容器 | 功能 |
---|---|
用于创建具有命名字段的元组子类的工厂函数 | |
类似列表的容器,在任一端快速追加和弹出元素 | |
类似字典的类,用于创建多个映射的单一视图 | |
字典子类,用于计算可散列对象的个数 | |
字典子类,记住添加条目的顺序 | |
字典子类,调用工厂函数来提供缺失的值 | |
字典对象的包装器,用于更轻松地进行字典子类化 | |
列表对象的包装器,用于更轻松地进行列表子类化 | |
字符串对象的包装器,用于更轻松地进行字符串子类化 |
namedtuple
Python 中的 namedtuple() 是 collections 模块中的数据类型。它为元组中的每个位置分配一个名称,允许通过字段名称访问元素,类似于我们通过索引访问元组中的元素。
语法
以下是 Python namedtuple() 数据类型的语法:
class collections.namedtuple(typename, field_names, rename, default)
示例
以下是 Python namedtuple() 数据类型的基本示例:
from collections import namedtuple student1 = namedtuple('student1',['name','rollno', 'marks']) var = student1(name = 'Sai',rollno=237, marks=89) print("Name :",var.name) print("Rollno :",var.rollno) print("Marks :",var.marks)
以下是上述代码的输出:
Name : Sai Rollno : 237 Marks : 89
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'])
ChainMap
在 Python 中,ChainMap 类用于将多个字典或映射转换为单个单元。如果没有指定映射,则提供单个空字典,以便新的链始终至少包含一个映射。
ChainMap() 类在Collections 模块中定义。它通常比创建新字典快得多。
语法
以下是 Python ChainMap() 的语法:
collections.ChainMap(iterable1, iterable2, iterable3)
示例
以下是 Python ChainMap() 的基本示例:
# Python program to demonstrate # ChainMap from collections import ChainMap d1 = {'one': 1, 'two': 2} d2 = {'three': 3, 'four': 4} d3 = {'five': 5, 'six': 6} # Defining the chainmap c = ChainMap(d1, d2, d3) print(c)
以下是上述代码的输出:
ChainMap({'one': 1, 'two': 2}, {'three': 3, 'four': 4}, {'five': 5, 'six': 6})
Counter
Python Counter 是一种容器,用于保存对象的计数。它用于计算迭代器中存在的项目数量。计数可以是任何整数值,包括零或负数。
Counter 是字典的子类。它将数据表示为键值对。它继承了字典的所有方法和属性。它允许执行算术和集合运算。它可以与任何实现迭代协议的迭代器一起使用。
语法
以下是 Python Counter 的语法:
class collections.Counter([iterable-or-mapping])
示例
在下面的示例中,我们以不同的方式初始化了Counter:
from collections import Counter # With sequence of items print(Counter(['x','x','z','x','y','z','x','x','z','x'])) # with dictionary print(Counter({'y':3, 'z':5, 'x':2})) # with keyword arguments print(Counter(z=3, x=5, y=2))
以下是上述代码的输出:
Counter({'x': 6, 'z': 3, 'y': 1}) Counter({'z': 5, 'y': 3, 'x': 2}) Counter({'x': 5, 'z': 3, 'y': 2})
OrderDict
在 Python 中,OrderedDict 是字典的子类,它记住插入键的顺序。OrderedDict() 和dict() 之间的唯一区别在于它们处理键顺序的方式。
标准字典在迭代时不保证任何特定顺序,而OrderedDict 提供了向字典中添加键的特定顺序,并在迭代时保持相同的顺序。
语法
以下是 Python OrderedDict() 类的语法:
collections.OrderedDict()
示例
以下是 Python OrderedDict() 的基本示例:
# A Python program to demonstrate working of OrderedDict from collections import OrderedDict od = OrderedDict() od['a'] = 1 od['b'] = 2 od['c'] = 3 od['d'] = 4 for key, value in od.items(): print(key,":",value)
以下是上述代码的输出:
a : 1 b : 2 c : 3 d : 4
defaultdict
Python defaultdict() 是一种容器,类似于字典。它存在于collection 模块中。它是字典类的子类,返回一个字典作为对象。
字典和 defaultdict 的功能相似,唯一的区别是 defaultdict 不会引发KeyError。它为不存在的键提供默认值。
语法
以下是 Python defaultdict() 类的语法:
defaultdict(default_factory)
示例
以下是 Python defaultdict() 类的基本示例:
from collections import defaultdict def default(): return 'Key not found' dic1 = defaultdict(default) dic1[1] = 'one' dic1[2] = 'two' dic1[3] = 'Three' print(dic1) print(dic1[5])
以下是上述代码的输出:
defaultdict(<function default at 0x000002040ACC8A40>, {1: 'one', 2: 'two', 3: 'Three'}) Key not found
UserDict
Python Userdict() 是 collections 模块中的一种字典。它是一个类,充当字典对象的包装器。当想要创建具有某些修改后的功能或某些新功能的自定义字典时,此类非常有用。
可以将其视为向字典添加新行为。此类接受字典实例作为参数,并模拟保存在常规字典中的字典。该字典可以通过此类的 data 属性访问。
语法
以下是 Python Userdict() 的语法:
collection.Userdict([data])
示例
以下是 Python Userdict() 类的基本示例:
from collections import UserDict dic = {'a':1,'b': 2,'c': 3,'d':4} # Creating an UserDict userD = UserDict(dic) print(userD)
以下是上述代码的输出:
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
UserList
Python UserList 是 collections 模块中类似于列表的容器。此类充当列表对象的包装器类。当想要创建具有某些修改后的功能或某些新功能的自定义列表时,此类非常有用。可以将其视为向列表添加新功能的一种方法。
UserList() 接受列表实例作为参数,并模拟保存在常规列表中的列表。该列表可以通过此类的 data 属性访问。
语法
以下是 Python UserList 类的语法:
collections.UserList(data)
示例
以下是 Python UserList() 的基本示例:
# Python program to demonstrate # userlist from collections import UserList List1 = [10, 20, 30, 40] # Creating a userlist userlist = UserList(List1) print(userlist.data)
以下是上述代码的输出:
[10, 20, 30, 40]
UserString
Python UserString 存在于collections 模块中。这是一个类,充当字符串的包装器类。此类用于创建我们自己的字符串,还可以修改方法的功能,并向类中添加新方法。可以将其视为向字符串添加新行为的一种方法。
UserString 类接受任何可以转换为字符串的参数,并模拟其内容保存在常规字符串中的字符串。该字符串可以通过此类的 data 属性访问。
语法
以下是 Python UserString 的语法:
collections.UserString(data)
示例
以下是 Python UserString 类的基本示例:
from collections import UserString data1 = [1,2,3,4] # Creating an UserDict user_str = UserString(data1) print(user_str) print("type :", type(user_str))
以下是上述代码的输出:
[1, 2, 3, 4] type : <class 'collections.UserString'>