python具名元组(namedtuple)的具体使用

当我们需要定义一个简单的类来存储数据时,Python 的 namedtuple 是一种很好的选择。namedtuple 可以看作是一个不可变的类,可以按名称来访问元组的各个元素,从而避免了索引数字所带来的混淆和错误。

使用 namedtuples 的主要优点是代码的可读性和设计的整洁性。因为它们是不可变的,所以它们适用于作为全局常量的对象或数据记录的值。

下面是具体的使用攻略:

1. 创建 namedtuple

首先,我们需要导入 namedtuple:

from collections import namedtuple

接下来,我们可以用 namedtuple 创建一个新的对象,实例化它并将其分配给变量。namedtuples 需要两个参数:一个是名称,另一个是一个元组,元组中包含各个元素的名称。例如,我们可以从我的网站中创建一个 namedtuples:

Color = namedtuple('Color', ['red', 'green', 'blue'])
c = Color(25, 50, 75)

上述代码就创建了一个名为 "Color" 的 named tuple,包含三个域 red、green 和 blue,并将变量 c 实例化为 Color 类型的对象。

2. 访问 namedtuple

访问 namedtuple 有两种方法:

(1) 通过索引访问

可以通过索引来访问 namedtuple。例如,我们可以使用以下方式来访问命名元组 c 的第一个元素 red:

print(c[0]) #输出 25

(2) 通过名称访问

我们可以使用名称来直接访问 namedtuple 的元素。例如,我们可以使用以下方式来访问命名元组 c 的第一个元素 red:

print(c.red) #输出 25

注意:由于 namedtuples 是不可变的,因此我们不能使用代码 c.red = 35 处理 namedtuples。

3. 实例化

实例化是指创建一个新的 namedtuple 类型的对象。有三种方法可以实例化 namedtuples。

(1) 通过 iterable 实例化

我们可以使用 iterable 来实例化 namedtuples,这种方式需要注意的是 iterable 中元素的数量必须和 namedtuples 中定义的元素数量一致。例如:

c1 = Color(*[255,255,0])

(2) 通过关键字实例化

我们可以使用关键字来实例化 namedtuples,在这种情况下,不需要按位置定义值,只需要用字典中的键值对声明它们就可以了。例如:

c2 = Color(red=255, green=0, blue=0)

(3) 通过 _make() 方法实例化

我们可以使用 _make() 方法来实例化 namedtuples,它接收一个可迭代对象作为参数。例如:

data = [225, 200, 125]
c3 = Color._make(data)

示例

from collections import namedtuple

# 定义namedtuple Color,包括三个域 red、green 和 blue
Color = namedtuple('Color', ['red', 'green', 'blue'])

# 实例化namedtuple,通过 iterable 实例化
c1 = Color(*[255,255,0])
print(c1) #输出: Color(red=255, green=255, blue=0)

# 实例化namedtuple,通过关键字实例化
c2 = Color(red=255, green=0, blue=0)
print(c2) #输出: Color(red=255, green=0, blue=0)

# 实例化namedtuple,通过 _make() 方法实例化
data = [225, 200, 125]
c3 = Color._make(data)
print(c3) #输出: Color(red=225, green=200, blue=125)

以上代码演示了使用 namedtuple 的三种实例化方法。在 c1 中,我们使用了 iterable 来实例化 namedtuples。在 c2 中,我们使用关键字来实例化 namedtuples。在 c3 中,我们使用 _make() 方法来实例化 namedtuples。

另一种示例,请看下面的代码段:

from collections import namedtuple

# 定义namedtuple User,包括三个域 name、age 和 gender
User = namedtuple('User', ['name', 'age', 'gender'])

# 实例化namedtuple
users = [
    User(name='Tom', age=18, gender='M'),
    User(name='Jerry', age=20, gender='M'),
    User(name='Lucy', age=22, gender='F')
]

# 根据性别统计数量
gender_counter = dict()
for u in users:
    if u.gender not in gender_counter:
        gender_counter[u.gender] = 1
    else:
        gender_counter[u.gender] += 1

print(gender_counter) #输出:{'M': 2, 'F': 1}

以上代码演示了如何使用 namedtuple 来创建一个用户记录的列表,并按性别统计用户数量。使用 namedtuple 能够更直观地定义数据结构,而且代码的可读性更高。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python具名元组(namedtuple)的具体使用 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 在Python中使用NumPy对切比雪夫级数进行积分并设置积分的下限

    首先,我们需要导入NumPy和SciPy库中的integrate模块用于积分。代码示例: import numpy as np from scipy import integrate 接着,我们需要定义切比雪夫级数。代码示例: def chebyshev_func(x, n): return np.cos(n * np.arccos(x)) 其中x为自变量,…

    python-answer 2023年3月25日
    00
  • python解析命令行参数的三种方法详解

    Python 解析命令行参数的三种方法详解 解析命令行参数是 Python 程序中常用的功能之一,Python 提供了多种方式来处理命令行参数。本文将详细介绍 Python 解析命令行参数的三种常用方法,并给出相应的示例说明。 方法一: sys.argv sys.argv 方法可以获取命令行中的所有参数,包括指定程序的名称。我们可以通过访问该列表来解析参数。…

    python 2023年6月2日
    00
  • Python 2.x.x 中的模块导入

    【问题标题】:Module import in Python 2.x.xPython 2.x.x 中的模块导入 【发布时间】:2023-04-04 21:12:01 【问题描述】: 我想使用我以前的程序作为一个模块。但是当我导入该程序时,程序会自动运行。我不想运行程序。我只想将该程序作为一个模块导入到我的新程序中,我使用该模块中的函数或变量。我试图添加这一行…

    Python开发 2023年4月6日
    00
  • 详解Python如何实现对比两个Excel数据差异

    下面是详解Python如何实现对比两个Excel数据差异的完整实例教程。 1. 准备工作 首先需要安装Python的pandas模块,它可以用于读写Excel文件和进行数据处理。可以通过命令行输入以下指令来安装: pip install pandas 然后需要准备两个Excel文件,假设它们的文件名分别为old.xlsx和new.xlsx。这两个文件的格式应…

    python 2023年5月13日
    00
  • python教程命名元组示例分析

    下面是详细讲解“python教程命名元组示例分析”的完整攻略。 一、前言 本文将分析Python官方教程中的命名元组示例,帮助大家更好地理解和运用命名元组这个数据类型。 二、什么是命名元组? 命名元组是Python中collections模块提供的一个数据类型。它是一个内置tuple子类,与普通元组相比增加了属性名,更易于阅读和维护。命名元组的定义方式类似于…

    python 2023年5月14日
    00
  • python+requests实现接口测试的完整步骤

    以下是关于使用Python和requests实现接口测试的完整步骤: Python+requests实现接口测试的完整步骤 requests是Python中一个流行的HTTP库,可以用于向Web服务器发送HTTP请求和接收响应。以下是使用Python和requests实现接口测试的完整步骤: 步骤一:编写测试用例 首先,我们需要编写测试用例,包括请求的URL…

    python 2023年5月14日
    00
  • Python 通用的group-by归约

    下面是针对Python通用的group-by归约的使用方法的详细攻略。 什么是group-by归约 group-by归约是一种对数据进行分组操作的方法。通过该方法,可以将数据按照指定的一列或多列进行分组,然后对每组数据进行计算或操作。 通常情况下,group-by归约适合于数据集合非常大的情况,因为该方法可以将数据尽可能地合并到更小的集合(组)中,从而提高计…

    python-answer 2023年3月25日
    00
  • 运行第一个Python程序

    Python作为解释型的编程语言,支持两种编程方式: 交互式编程 源文件编程 交互式编程 交互式编程指的是在命令行窗口打开python运行环境,在运行环境中输入代码,每输入一段代码运行一次程序,就好像跟计算机对话一样,所以称为交互式编程。 源文件编程 源文件编程意思是创建一个.py的文件,文件中可以写入大段的代码,运行时解释器会逐行读取并执行源文件的代码程序…

    2022年11月1日
    00
合作推广
合作推广
分享本页
返回顶部