没有合适的资源?快使用搜索试试~ 我知道了~
首页【Python】详解 collections 模块之 namedtuple 函数
【Python】详解 collections 模块之 namedtuple 函数
641 浏览量
更新于2023-05-30
评论
收藏 81KB PDF 举报
目录 一、绪论 二、namedtuple 函数 2.1 说明 一、绪论 collections 作为 Python 的内建集合模块,实现了许多十分高效的特殊容器数据类型,即除了 Python 通用内置容器: dict、list、set 和 tuple 等的替代方案。在 IDLE 输入 help(collections) 可查看帮助文档,其中常见的类/函数如下: 名称 功能 namedtuple 用于创建具有命名字段的 tuple 子类的 factory 函数 (具名元组) deque 类似 list 的容器,两端都能实现快速 append 和 pop (双端队列) Ch
资源详情
资源评论
资源推荐

【【Python】详解】详解 collections 模块之模块之 namedtuple 函数函数
目录目录
一、绪论
二、namedtuple 函数
2.1 说明
一、绪论一、绪论
collections 作为 Python 的内建集合模块,实现了许多十分高效的特殊容器数据类型,即除了 Python 通用内置容器: dict、
list、set 和 tuple 等的替代方案。在 IDLE 输入 help(collections) 可查看帮助文档,其中常见的类/函数如下:
名称 功能
namedtuple
用于创建具有命名字段的用于创建具有命名字段的 tuple 子类的子类的 factory 函数函数 (具名元具名元
组组)
deque
类似 list 的容器,两端都能实现快速 append 和 pop (双端队
列)
ChainMap 类似 dict 的类,用于创建多个映射的单视图
Counter 用于计算 hashable 对象的 dict 子类 (可哈希对象计数)
OrderedDict 记住元素添加顺序的 dict 子类 (有序字典)
defaultdict dict 子类调用 factory 函数来提供缺失值
UserDict 包装 dict 对象以便于 dict 的子类化
UserList 包装 list 对象以便于 list 的子类化
UserString 包装 string 对象以便于 string 的子类化
而本文详述的对象为具名/命名元组 —— namedtuple 函数。
二、二、namedtuple 函数函数
Python 内建普通元组 tuple 存在一个局限,即不能为 tuple 中的元素命名,故 tuple 所要表达的意义并不明显。
因此,引入一工厂函数 (factory function) collections.namedtuple,以构造一个带字段名的 tuple。具名元组 namedtuple 的
实例和普通元组 tuple 消耗的内存一样多 (因为字段名都被保存在对应的类中) 但却更具可读性,可令代码更易维护;同时,相
比于 dict 更加轻量和高效,因为 Python 不会用 __dict__ 来存放实例的属性。但注意,具名元组 namedtuple 中的属性均不可
变。
2.1 说明说明
collections.namedtuple(typename, field_names, *, verbose=False, rename=False, module=None)
namedtuple,顾名思义是已具命名的元组 (简称具名元组),它返回一个 tuple 子类。
该 tuple 子类的名称为参数子类的名称为参数 typename,各个字段名为参数字段名为参数 field_names。
其中,field_names 既可以是一个类似 [‘x’, ‘y’] 的字符串序列 (string-seq),也可以是用空格或逗号分隔开的纯字符串 string,
如 ‘x y’ 或 ‘x, y’。任何 Python 的有效标识符都可作为字段名。所谓有效标识符由字母,数字,下划线组成,但首字母不能是
数字或下划线,且不能与 Python 关键词重复,如 class, for, return 等。
具名元组 namedtuple 既可通过可通过 field_names 获取获取元素值/字段值,也能通过索引和迭代获取通过索引和迭代获取元素值/字段值。
>>> from collections import namedtuple
# Point = namedtuple("Point", 'x, y') # 等价的初始化方式
# Point = namedtuple("Point", 'x y') # 等价的初始化方式
>>> Point = namedtuple("Point", ['x', 'y']) # 初始化一个具名元组 Point
>>> Point
# -------------------------------------------------------------------------
>>> p1 = Point(2, 3) # 实例化一个具名元组 Point 对象 p1
>>> p1 # 可读 (readable __repr__ with a name=value style)
Point(x=2, y=3)
# -------------------------------------------------------------------------



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0