在本文中,机器学习工程师乔治·赛夫介绍了四种流行的Python收集模块数据类型及其各自的使用方法。这些数据类型可以优化代码,以实现更简洁的任务执行。Python最大的优势之一是它有多种模块和软件包可供选择。这些模块和包将Python的功能扩展到许多流行领域,包括机器学习、数据科学、网络开发和前端。最佳表现之一是Python的内置集合模块。
一般来说,Python中的集合模块是一个存储数据集(如列表、字典、元组和集合)的容器。这些容器嵌入在Python中,可以开箱即用。集合模块提供了额外的高性能数据类型,可以优化代码并简化一些任务。
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