四种高性能数据类型,Python collections助你优化代码、简洁任务

在本文中,机器学习工程师乔治·赛夫介绍了四种流行的Python收集模块数据类型及其各自的使用方法。这些数据类型可以优化代码,以实现更简洁的任务执行。Python最大的优势之一是它有多种模块和软件包可供选择。这些模块和包将Python的功能扩展到许多流行领域,包括机器学习、数据科学、网络开发和前端。最佳表现之一是Python的内置集合模块。

一般来说,Python中的集合模块是一个存储数据集(如列表、字典、元组和集合)的容器。这些容器嵌入在Python中,可以开箱即用。集合模块提供了额外的高性能数据类型,可以优化代码并简化一些任务。

å››ç§é«˜æ€§èƒ½æ•°æ®ç±»åž‹ï¼ŒPython collections助你优化代ç ã€ç®€æ´ä»»åŠ¡

writer George Seif(机器学习工程师)。

计数器@

官方文档:https://docs.python.org/2/library/collections.html # collections . counter

counter是字典对象的子类。集合模块中的计数器()函数接收迭代器,如列表或元组,并返回计数器字典。这个字典的关键字是这个迭代器中唯一的元素,每个关键字的值是迭代器元素的计数。

首先,我们需要从集合包中导入一个计数器:

lst=[1,2,3,3,2,1,1,1,2,2,3,1,2,1,1]计数器=计数器(lst)

如果我们想要创建一个计数器对象,我们还需要像其他对象类一样将它分配给一个变量,并且传递给计数器对象的唯一变量是迭代器。

计数器({1:7,2:5,3})

如果我们使用简单的打印功能(打印(计数器))打印此计数器,我们将得到一些与字典略有相似的输出:

LST=[1,2,3,3,2,1,1,1,2,2,3,1,2

您可以使用这些键值来访问任何计数器项目。这与您从标准Python字典中获取元素的方式完全相同。

目前,计数器对象中最有用的函数是最常用的()。当应用于计数器对象时,它会返回一个包含前n个公共元素及其计数的列表,这些元素按程度的降序排列。

以上代码将打印以下元组列表。

每个元组的第一个元素是列表中唯一的项目,第二个元素是计数值。这是一个快速简单的方法来解决“获取列表中前三个公共元素及其计数”的问题

如果你想了解更多关于柜台的功能,你可以查看官方文件。

official document:https://docs.python.org/2/library/collections.html # collections . default dictionary

default dictionary的工作方式与普通python字典完全相同,只是当您尝试访问不存在的键时,它不会报告错误,而是会用默认值初始化该键。默认值是根据创建defaultdict对象时作为参数输入的数据类型自动设置的。下面的代码就是一个例子。

相反,它用默认值初始化该键。默认值是根据创建defaultdict对象时作为参数输入的数据类型自动设置的。下面的代码就是一个例子。

在上面的例子中,传递给defaultdict对象的默认值是int。然后每个键都有一个值,也就是说,“鲍勃”和“凯蒂”各有一个数字。但是在最后一行,我们试图访问一个未定义的密钥,即“萨拉”。

在普通字典中,此操作将报告错误。但是,当使用defaultdict时,将自动为“Sara”初始化一个新密钥,其值为0,对应于我们的int数据类型。因此,最后一行可以打印出“鲍勃”、“凯蒂”和“萨拉”以及相应的值。

如果我们使用list来初始化我们的默认字典,即names _ dictionary=default dictionary(list),那么“Sara”的值将被初始化为空列表[],并且打印的内容将变为:

如果你想了解更多关于默认的功能,你可以查看官方文件。

deque@

官方文件:https://docs.python.org/2/library/collections.html # collections . deque

queue是计算机科学的基础设施,遵循先进先出的原则。简而言之,即使是添加到队列中的第一个对象也必须首先删除。我们只能在队列前面插入内容,从后面删除内容——。我们不能对中间内容进行操作。

collections库中的Deque优化了此功能。这种方法的关键特征之一是保持队列长度不变,也就是说,如果您将队列的最大大小设置为10,deque将根据先进先出原则添加和删除元素,以保持队列的最大大小为10。这是目前为止在Python中使用队列的最佳方式。

让我们看另一个例子。我们首先创建了一个deque对象,然后用1到10的整数初始化它。

德奎尔([1,2,3,4,5,6,7,8,9,10),最大透镜=10)

在上面的代码中,我们首先初始化deque,并指定它的最大长度为10。然后,我们通过for循环将该值插入队列。请注意,我们已经以与公共Python列表相同的方式填充了队列。最后,我们打印了结果。

用于我的队列范围(10,15):追加(I 1)打印(我的队列)

因为我们的队列被设置为maxlen=10,并且循环值增加了10个元素,所以这个队列包含从1到10的所有数字。现在让我们看看如果我们继续向它添加数字会发生什么。

让我们创建2个姓名组sfor2人和打印输出他们的演示文稿。人=姓名组(“人”,“姓名工作”)迈克=人(姓名=“迈克”,年龄=30岁,工作=“数据科学家”)凯特=人(姓名=“凯特”,年龄=28岁,工作=“项目管理”)打印(迈克)打印(凯特)

在上面的代码中,我们向队列中添加了5个元素——,编号为11到15。但是我们的队列只能有10个元素,所以它需要删除一些元素。因为队列必须遵守先进先出原则,所以它删除了插入队列的前五个元素,它们是按插入顺序排列的[1,2,3,4,5]。打印结果如下:

人(姓名=“迈克”,年龄=30岁,工作=“数据科学家”)人(姓名=“凯特”,年龄=28岁,工作=“项目管理”)

如果你想了解更多关于德清的功能,你可以查看官方文件。

官方文件:https://Docs.python.org/2/Library/Collections.html #收藏。命名元组

当您使用Python创建常规元组时,它的元素是泛型的,而不是命名的。这使得您必须记住每个元组元素的确切索引。Namedtuple可以解决这个问题。

namedtuple()可以为元组中的每个位置返回一个具有固定名称的元组,并为namedtuple对象返回一个公共名称。要使用namedtuple,首先需要为它创建一个模板。下面的代码创建了一个名为“人”的命名双联模板,其属性为“姓名”、“年龄”和“工作”。

以上代码很容易理解。我们初始化了一个名为“人”的模板及其所有属性。上述代码的最终打印结果是:

因此,命名元组使得元组的使用更加简单、易读和有组织。

如果你想了解更多关于命名耦合器的功能,你可以查看官方文件。

极牛网精选文章《四种高性能数据类型,Python collections助你优化代码、简洁任务》文中所述为作者独立观点,不代表极牛网立场。如若转载请注明出处:https://geeknb.com/3041.html

(32)
打赏 微信公众号 微信公众号 微信小程序 微信小程序
主编的头像主编认证作者
上一篇 2019年11月4日 上午11:50
下一篇 2019年11月4日 下午3:00

相关推荐

发表回复

登录后才能评论
扫码关注
扫码关注
分享本页
返回顶部