当我们需要对元组进行访问,但是元组的元素又不方便用名字进行访问时,我们可以使用 namedtuple
把元组转换为带有名字的元素,便于我们进行访问。下面是使用 namedtuple
的详细攻略:
1. 导入模块
首先,我们需要导入 collections
模块,因为 namedtuple
函数是该模块中的一个方法。
from collections import namedtuple
2. 定义命名元组
接下来,我们需要调用 namedtuple
方法来创建一个命名元组。它需要两个参数:元组的名称(我们自定义)和元组的元素名称(作为一个字符串列表)。
person = namedtuple('Person', ['name', 'age', 'gender'])
上述代码创建了一个名为 person
的命名元组,该元组包含3个元素 name
、age
和 gender
。
3. 创建实例
现在我们可以用上面定义的命名元组来创建实例了。我们可以通过传递参数给命名元组来创建实例。
person1 = person('Tom', 20, 'Male')
person2 = person('Lucy', 18, 'Female')
上述代码创建了两个不同的 person
实例,分别为 person1
和 person2
。
4. 访问元素
我们可以使用点号 .
访问命名元组中的元素,就像访问对象的属性一样。
print(person1.name) # 输出 'Tom'
print(person2.age) # 输出 18
上述代码分别输出了 person1
和 person2
中的元素 name
和 age
。
示例1
from collections import namedtuple
# 创建命名元组
Score = namedtuple('Score', ['chinese', 'math', 'english'])
# 创建实例
s1 = Score(90, 80, 85)
s2 = Score(85, 95, 90)
# 访问元素
print(s1.chinese) # 输出 90
print(s2.math) # 输出 95
上述代码演示了创建一个命名元组 Score
,该元组包含3个元素 chinese
、math
和 english
。然后创建了两个不同的实例 s1
和 s2
。最后,访问了 s1
的 chinese
元素和 s2
的 math
元素。
示例2
from collections import namedtuple
# 创建命名元组
Student = namedtuple('Student', ['name', 'age', 'gender'])
# 创建实例
s1 = Student('Tom', 20, 'Male')
s2 = Student('Lucy', 18, 'Female')
# 访问元素
print(s1.name) # 输出 'Tom'
print(s2.gender) # 输出 'Female'
上述代码演示了创建一个命名元组 Student
,该元组包含3个元素 name
、age
和 gender
。然后创建了两个不同的实例 s1
和 s2
。最后,访问了 s1
的 name
元素和 s2
的 gender
元素。