Python中的命名元组(namedtuple)到底是什么东西?干嘛用的?

这篇具有很好参考价值的文章主要介绍了Python中的命名元组(namedtuple)到底是什么东西?干嘛用的?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python中有一种特殊的元组叫做命名元组,英文名叫namedtuple。

为什么要用命名元组呢?

思考下面的问题:

如何设计数据结构承载一个五维的数据,如一个学生的基本信息?

方法有二:

1. Python是面向对象语言,可以使用class,定义一个学生类,将五维信息作为属性,这是一个重量级的做法。或者说,是一个自定义的数据结构。也是比较通用的方法。

2. 使用tuple,存储五维数据,轻量级。例如:student = ('xiaowang','00001','male',22,99)

        但是这样的做法有两个弊端:(1)索引值难记,难对应。(2).无法表达元素的含义,只能事先约定。

于是,Python创造一个新的数据类型,一种特殊的元组,命名元组(namedtuple)。

值的含义被命名,表述清楚,使用’.’符引用 。

同时,兼具tuple特性,轻量级,仍然可以使用索引。

龟叔:“不要过度的自己去构建数据结构,尽量去使用命名元组 (named tuple) 而不是对象,尽量使用简单的属性域,因为内置数据类型是你最好的朋友。”

可以定义一个命名元组对象student_info用来存储一个五维的学生信息数据。

from collections import namedtuple
# 命名元组对象student_info
student_info = namedtuple('stud_info','name, id, gender, age, score')
# 使用student_info对象对studinf进行赋值
studinf = student_info(name = 'xiaowang', id = '00001', gender = 'male', age = 22, score = 99)
print("name:{}, id:{}, gender:{}, age:{}, score:{}".format(studinf[0],studinf[1],studinf[2],studinf[3],studinf[4]))

也可以用"."来引用属性

from collections import namedtuple
# 命名元组对象student_info
student_info = namedtuple('stud_info','name, id, gender, age, score')
# 使用student_info对象对studinf进行赋值
studinf = student_info(name = 'xiaowang', id = '00001', gender = 'male', age = 22, score = 99)
print("name:{}, id:{}, gender:{}, age:{}, score:{}".format(studinf.name,studinf.id,studinf.gender,studinf.age,studinf.score))

可以使用_make方法对命名元组整体赋值。

from collections import namedtuple
# 命名元组对象student_info
student_info = namedtuple('stud_info','name, id, gender, age, score')
value = ['xiaoli','00002','female',23,100]
studinf = student_info._make(value)
print("name:{}, id:{}, gender:{}, age:{}, score:{}".format(studinf.name,studinf.id,studinf.gender,studinf.age,studinf.score))

可以使用_replace方法修改命名元组的元素值,生成新命名元组。

from collections import namedtuple
# 命名元组对象student_info
student_info = namedtuple('stud_info','name, id, gender, age, score')
# 使用student_info对象对studinf进行赋值
studinf = student_info(name = 'xiaowang', id = '00001', gender = 'male', age = 22, score = 99)
newstud = studinf._replace(name = 'xiaozhao', id = '00003')
print(newstud)
print(studinf)

namedtuple,python,开发语言

 注意看,studinf是否有改变。 初始化时的’stud_info’在输出的时候体现。

命名元组的终极实例

从csv文件中导入数据

namedtuple,python,开发语言

 依次显示出来。

from collections import namedtuple
import csv
student_info = namedtuple('stud_info','name, id, gender, age, score')
for studinfs in map(student_info._make, csv.reader(open("D:\\students.csv", "r"))):
    print(studinfs)

namedtuple,python,开发语言

学会了就点个赞吧。文章来源地址https://www.toymoban.com/news/detail-684540.html

到了这里,关于Python中的命名元组(namedtuple)到底是什么东西?干嘛用的?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 今天我们来浅谈一下ChatGPT到底是什么东西

    这是一篇非学术专业性的文章,而我也是为了解chatGPT而学了两三天人工智能,所以哪里写的不好的不对的地方还希望海涵。 图灵测试 1950年,人工智能之父艾伦·图灵提出乐“图灵测试”。就是说当你在不面对面的时候跟机器人进行文字聊天的时候,如果你很难分辨出来对方

    2023年04月09日
    浏览(40)
  • 大白话讲解数据库的三级模式及二级映像(所谓的内外模式在生活中到底是什么东西?)

    形象一点来说,把数据看做货物,数据库是仓库,模式就是表格。 你有一个仓库,仓库里成千上万的货物,随便你怎么堆,你堆个正方体,堆个圆柱体,甚至随便乱堆都行,你怎么堆的叫内模式。 完事你写了一张表,表上对全部货物按某个标准分类,而且标清了啥货物在哪

    2024年02月07日
    浏览(43)
  • 【学习笔记】Python核心技术与实战-基础篇-03列表和元组,到底用哪个?

    列表和元组,都是一个可以放置任意数据类型的有序集合。 在绝大多数编程语言中,集合的数据类型必须一致。不过,对于 Python 的列表和元组来 说,并无此要求: 列表是动态的,长度大小不固定,可以随意地增加、删减或者改变元素(mutable)。 而元组是静态的,长度大小

    2024年02月08日
    浏览(46)
  • 【Android】Kotlin 中的Flow是个什么东西

    前言 Kotlin Flow 是 Kotlin Coroutine 用于异步获取数据流的一个库。它允许我们以类似于集合的方式发射多个异步生成的值,并通过类似于 RxJava 的操作符链式处理这些值。 基本概念 Flow 的基本概念是,一个 Flow 代表了一个异步生成的值序列,这些值可能会在不同的时间点被发送出

    2024年02月08日
    浏览(47)
  • Django的数据库操作中的F对象是什么东西?

    在Django中, F 对象是一个用于表示数据库字段的值的特殊对象。 它允许你在数据库层面进行原子操作,而不需要先将数据从数据库中检索到Python层再进行操作。 F 对象的使用通常涉及到数据库更新,特别是在处理并发操作时。 以下是 F 对象的主要特性和用法: 原子操作:

    2024年01月18日
    浏览(51)
  • Python中的元组(tuple)

    Python中的元组(tuple)是一种不可变的有序序列,与列表(list)类似。元组中的元素可以是任何类型的对象,并且可以包含重复的元素。元组一旦创建就无法修改。 以下是Python元组的一些常用操作: 1. 创建元组:可以使用小括号()或者tuple()函数来创建一个元组。 ```python my_tuple =

    2024年02月04日
    浏览(47)
  • 数据存储中的加盐到底是什么?

    盐(Salt) 在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为“加盐”。(看不懂没关系,接着往下看) 早期的软件系统或者互联网应用,数据库中设计用户表的时候,大致是这样的结构: 数据

    2024年02月07日
    浏览(26)
  • 软件测试中的二八定律到底是什么?

    目录 前言: 一、80%的软件缺陷,集聚在软件20%的模块中 二、软件测试工作尽早介入 三、反映在软件测试的自动化方面

    2024年02月13日
    浏览(37)
  • OpenCV中的HoughLines函数和HoughLinesP函数到底有什么区别?

            基于OpenCV进行直线检测可以使用HoughLines和HoughLinesP函数完成的。这两个函数之间的唯一区别在于,第一个函数使用标准霍夫变换,第二个函数使用概率霍夫变换(因此名称为 P)。概率版本之所以如此,是因为它仅分析点的子集并估计这些点都属于同一条线的概率

    2024年02月07日
    浏览(39)
  • Python中进程和线程到底有什么区别?

    python 安装包+资料:点击此处跳转文末名片获取 一、进程和线程的关系 线程与进程的区别可以归纳为以下4点: 地址空间和其它资源(如打开文件) :进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。 通信 :进程间通信IPC,线程间可以直接读写

    2023年04月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包