Python模块与集合模块详解

在Python编程语言中,模块是一种包含Python语句和定义的文件,它也可以包含可执行的代码。将相关的模块组织在一起,可以使代码更加易于理解和使用,同时保持代码的整洁和有序。本文作为数据科学博客大赛的一部分发布。

模块简介

如果已经了解模块是什么,可以跳过这部分。以下是一个简单的示例,展示如何从一个名为math的模块中导入特定的属性sqrt()平方根函数。

from math import sqrt print(sqrt(4)) # 输出: 2.0

现在已经了解了Python集合模块的含义,让深入了解一些模块。

集合模块

集合模块包括一些不同类型的容器。容器帮助存储不同类型的对象,并提供访问和迭代它们的方法。本文将介绍以下容器:

  • 计数器(Counters)
  • 默认字典(Default Dictionary)
  • 链映射(Chain Maps)
  • 命名元组(Named Tuple)

假设想要计算容器中每个元素出现的次数,可以使用计数器函数。以下是一个示例:

from collections import Counter # 初始化一个包含随机数字的列表,并打印每个元素的出现次数 random_list = [1,2,2,3,32,25,2,423,43,3432,3,52,54,5,5345,344,3344,5,54354,34,454] Counter(random_list)

另一个字符串的示例:

string = "将统计这句话中的单词数量:数据分析社区汇集了数据实践者、思想领袖和企业,利用数据为他们的企业创造价值。" word = string.split() Counter(word)

知道字典通过键值对存储元素,类似于映射,键必须是唯一的且不可变的。这里将看看普通字典和默认字典的区别。

# 创建一个简单的字典并打印它 normal_dict = {'A':1,'B':2,'C':3,'D':4,'E':5} normal_dict # 现在调用键A normal_dict['A'] # 输出1,如预期 # 但如果尝试调用一个不存在的键呢? normal_dict['F'] # 会抛出KeyError,因为这个键不存在于字典中。在某些情况下,特别是当执行for循环时,可能想要快速添加尚未存在于字典中的键,这时可以使用默认字典。默认字典之所以得名,是因为它在可能发生键错误的情况下分配一个默认值。 # 以下是如何创建默认字典的示例: from collections import defaultdict default_d = {'A':1,'B':2,'C':3,'D':4,'E':5} default_d = defaultdict(lambda: 0) default_d['F'] # 这里不再得到错误,而是自动分配了一个默认值。 # 例如,考虑达美乐的菜单。菜单包括比萨、饮料和小食。将所有项目及其价格存储为项目-价格对。 Pizza = {'Farmhouse': 300, 'Chessy-7': 250} Drinks = {'Coca-Cola':80,'Pepsi':80,'Red-bull':100} SideOrders = {'Garlic Bread':120,'Tacos':90} # 现在可以使用链映射构建一个覆盖这些不同字典的单个字典。 from collections import ChainMap Menu = ChainMap(Pizza,Drinks,SideOrders) # 现在可以像使用单个字典一样使用Menu字典: Menu['Pepsi'] # 在构建链映射时,只是在构建一个字典链。在查找菜单中的项目时,首先查找比萨,然后是饮料,最后是小食。 # 如果想要添加一个新的比萨,只需写: Pizza['Margherita'] = 100 Menu['Margherita'] # 这是链映射的可更新功能! # 它还有一个很棒的字符串表示: ChainMap({'Farmhouse': 300, 'Chessy-7': 250, 'Margherita': 100}, {'Coca-Cola': 80, 'Pepsi': 80, 'Red-bull': 100}, {'Garlic Bread': 120, 'Tacos': 90}) # 因此,使用链映射肯定会使代码更加优雅。 # 创建一个普通元组并添加值: normal_tuple = (10,20,30) normal_tuple[1] # 输出:20 # 这是一个非常小的元组,这意味着如果想要获取,比如说20,可以看到它在索引1,然后得到了10。 # 所以只需要查看索引并传递它,就可以了。 # 现在,在某些情况下,可能有一个大的元组,或者可能不记得哪个值在哪个索引。所以命名元组将不仅有数值连接到值,而且还会有一个命名索引对应于该值。 # 让展示一下这意味着什么: from collections import namedtuple Article = namedtuple('Article',['title','domain','number_of_words']) Sentimental_analysis = Article('Sentimental_analysis','NLP','1000') Sentimental_analysis # 现在如果看Article,它看起来像是在面向对象编程中创建的对象和元组本身的混合。 # 所以本质上,它就像之前创建的元组,有10,20,30。但请注意,每个值都有一个关联。 # 现在调用 Sentimental_analysis.domain # 就像它们只是属性一样。 # 甚至可以使用索引来调用,如果需要的话, # 所以集合模块的内容就是这些。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485