温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python具名元组有什么作用

发布时间:2021-11-25 11:57:32 来源:亿速云 阅读:169 作者:iii 栏目:互联网科技

这篇文章主要讲解了“python具名元组有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python具名元组有什么作用”吧!

具名元组的定义

Python标准库collections中定义了具名元组(namedtuple)工厂函数,它可以构建带字段名的元组。

工厂函数参数详解

变量名 = namedtuple(typename, field_names, *, rename=False, defaults=None, module=None)

namedtuple工厂函数的参数详解:

typename:定义具名元组的名称,字符串型。

field_names:定义具名元组的字段名。该参数可以使用2种格式:

  • 内部元素都是字符串的列表或元组;

    例如['商品','单价',’数量']或('商品','单价',’数量')

  • 以英文逗号','分隔的长字符串。字段名必须符合以下规则:

    例如'商品,单价,数量'

字段名命名规则:

  • 不能与关键字重名

  • 不能以下划线开头

  • 以字母(包括汉字)开头,由字母、数字、下划线组成。

rename:默认是False,意思是必须指定字段名。若为True,系统会对缺省的、重复的字段名自动重命名为'_索引值'。

defaults:设置默认值,可以是列表、元组,当字段数量大于defaults的元素数量时,后面的字段获得缺省值。

例如字段名有'a','b','c'这3个,缺省值给了'1','2'两个缺省值时,'b'=1,'c'=2。

module:设置所属模块,默认是'__main__'。

读取文件到具名元组

具名元组使用案例如下:

from collections import namedtuple


def file_to_list(file):
    with open(file, encoding='utf8') as f:
        # 创建具名元组构造器,具名元组名称是goods,字段名源自文件首行(除去头尾空白符)
        # 具名元组构造器的变量名是goods。
        goods = namedtuple('goods', f.readline().strip())
        fruit_list = []
        for line in f:
            if len(line) < 3:  # 过滤空行及数据不完整的行。
                continue
            # 读取一行文件内容,去除头尾空白符,以','分割成列表
            # 用*打散列表,将列表中的元素分别作为参数传入goods具名元组构造器
            line = goods(*(line.strip().split(',')))
            fruit_list.append(line)
    return fruit_list


l1 = file_to_list('list.txt')
print(l1[0])
print(l1[0].商品, l1[1].单价, l1[1].数量)
print(l1[1][0], l1[1][1], l1[1][2])
print(l1[2][0], l1[1][1:3])


out:
goods(商品='苹果', 单价='4.8', 数量='5')
苹果 2.9 10
雪梨 2.9 10
大枣 ('2.9', '10')

通过以上案例可以了解怎么创造具名元组构造器,怎么用具名元组构造器创建具名元组。

具名元组的优点

具名元组有以下几个优点:

  1. 具名元组是元组的子类,继承了元组的所有特性,也就是说具名元组可以用所有元组可用的方法和属性。

  2. 具名元组和元组存储数据消耗的内存是一样的,与字典相比大大节省空间。

  3. 具名元组可以用字段名访问数据,大大提高代码的可读性。

感谢各位的阅读,以上就是“python具名元组有什么作用”的内容了,经过本文的学习后,相信大家对python具名元组有什么作用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI