【python高级编程】namedtuple用法--给元组中的每个元素命名

2024-06-11 13:58

本文主要是介绍【python高级编程】namedtuple用法--给元组中的每个元素命名,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为什么要给元组中的每个元素命名

给每个元组中的元素命名,我们就可以使用名字去访问对应元素,相对于索引访问,这样可以大大提高程序的可读性。


使用元组赋值法

在c语言中,我们可以定义常量来命令,或者使用枚举变量来完成,而在python中,可以使用元组赋值法进行。
假设我们有一个元组,从0-2的索引分别对饮与,NAME,AGE,GRADE,我们可以用以下方式去完成:

NAME, AGE, GRADE = range(0, 3

使用namedtuple

namedtuplecollections模块中的一个工厂函数,使用此函数可以创建一个可读性更强的元组。
调用该函数后,它会返回一个tuple类型的子类(python的基本数据类型都是类),这个子类的中文名称为具名元组

在使用普通的元组时,我们只能通过索引下标去访问对应元素,而namedtuple,我们既可以使用索引下标去访问,也可以通过名字去访问,增加了代码的可读性。

另外,我们也不用去考虑性能问题,因为具名元组和普通元组所需要的内存空间相同

下面我们来看namedtuple方法的参数。
下面是2个必传参数,typenamefield_names,一般我们只会用到这两个参数。

typename: 参数类型为字符串,具名元组返回一个元组子对象,我们要为这个对象命名,传入typename参数即为子对象的名称。

field_names: 参数类型为字符串序列,用于为创建的元组的每个元素命名,可以传入像[‘a’, ‘b’]这样的序列,也可以传入'a b''a, b'这种被分割字符分割的单字符串,但必须是合法标识符。

from collections import namedtupleStudent = namedtuple("Student", ['name', 'age', 'grade'])
d1 = Student("小明", 18, 100)
d2 = Student(name="小王", grade=99, age=18) # 函数的指定具体参数名传参
print(d1)
print(d2)
print(d1[0]) # 可通过索引访问
print(d2.name)  # 可通过属性名访问

注:具名元组在存储csv或者sqlite3返回数据的时候特别有用。


使用具名元组创建一副纸牌
import collections
# 将纸牌定义为具名元组,每个纸牌都有等级和花色
Card = collections.namedtuple('Card', 'rank suit')class FrenchDeck:# 等级2-Aranks = [str(n) for n in range(2,11)] + list('JQKA')# 花色红黑方草suits = 'spades diamonds clubs hearts'.split()# 构建纸牌def __init__(self):self._cards = [Card(rank, suit) for suit in self.suits for rank in self.ranks]# 获取纸牌def __getitem__(self, position):return self._cards[position]>>> french_deck = FrenchDeck()
>>> french_deck[0]
Card(rank='2', suit='spades')
>>> french_deck[0].rank
'2'
>>> french_deck[0].suit
'spades'

这篇关于【python高级编程】namedtuple用法--给元组中的每个元素命名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1051359

相关文章

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

C语言中%zu的用法解读

《C语言中%zu的用法解读》size_t是无符号整数类型,用于表示对象大小或内存操作结果,%zu是C99标准中专为size_t设计的printf占位符,避免因类型不匹配导致错误,使用%u或%d可能引发... 目录size_t 类型与 %zu 占位符%zu 的用途替代占位符的风险兼容性说明其他相关占位符验证示

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.