Python 命名元组收集数据

  • Post category:Python

当需要定义一些简单的类来表示数据时,使用Python中的命名元组是一种简单、快速、有用的方法。命名元组可以看作是一个轻量级的类定义,可以用于存储数据。在使用命名元组时,只需要定义元组的名称和字段名称即可,命名元组会自动生成相应的类。

下面是Python 命名元组收集数据的完整攻略:

定义命名元组

我们使用collections中的namedtuple函数定义一个命名元组,例如:

from collections import namedtuple

# 定义一个命名元组
Person = namedtuple('Person', ['name', 'age', 'country'])

这里定义了一个Person命名元组,包含三个字段,分别对应name、age和country。在定义时,需要传入两个参数,第一个是元组的名称,第二个是字段名称列表,这里用的是一个列表。

实例化命名元组

实例化一个命名元组时,可以像实例化普通元组一样使用括号,只需要将需要传入的值作为参数传入即可。例如:

# 实例化一个命名元组
person = Person('Tom', 30, 'USA')

# 访问命名元组的字段
print(person.name) # 输出:Tom
print(person.age) # 输出:30
print(person.country) # 输出:USA

命名元组的属性和方法

因为命名元组的本质是一个类,所以它可以有自己的属性和方法。

_fields属性

命名元组有一个属性叫做_fields,用于获取所有字段的名称。例如:

# 获取所有字段的名称
fields = Person._fields
print(fields) # 输出:('name', 'age', 'country')

_make方法

命名元组也有一个_make方法,可以用于创建一个新的命名元组实例。例如:

# 使用_make方法创建新实例
p = Person._make(['Jerry', 28, 'Canada'])
print(p.name) # 输出:Jerry
print(p.age) # 输出:28
print(p.country) # 输出:Canada

示例说明:

示例1:使用命名元组保存学生信息

from collections import namedtuple

# 定义一个命名元组,用来保存学生信息
Student = namedtuple('Student', ['name', 'age', 'gender', 'score'])

# 实例化一个学生对象
student = Student('Tom', 18, 'male', 90)

# 输出学生信息
print(f'姓名:{student.name},年龄:{student.age},性别:{student.gender},成绩:{student.score}')

# 计算学生平均分
average_score = (student.score + 80) / 2
print(f'平均分为:{average_score}')

示例2:使用命名元组保存图书信息

from collections import namedtuple

# 定义一个命名元组,用来保存图书信息
Book = namedtuple('Book', ['title', 'author', 'publisher', 'price'])

# 实例化一个图书对象
book = Book('Python入门教程', 'Tom', '电子工业出版社', 39.9)

# 输出图书信息
print(f'书名:{book.title},作者:{book.author},出版社:{book.publisher},价格:{book.price}')

# 打折后的图书价格
discount_price = book.price * 0.9
print(f'打折后的价格为:{discount_price}')

以上就是Python 命名元组收集数据方法的完整攻略。