python集合操作方法,Python集合的操作
总的来说,我对Python的list、tuple、dictionary等数据结构比较熟悉,但是我的收藏可能有点少。而结合了唯一元素的唯一性和o(1)时间复杂度的成员检测方法,在很多任务中有着特殊的优势。更多Python视频、源代码、资料可免费加群683380553。
介绍了Python集合的常用方法和概念,包括集合元素的运算、基本集合运算和不变集。
了解什么是Python集合:如何生成,何时使用,什么是嵌入函数,以及它们与集合论运算的关系。
集合、 列表与元组列表和元组是在序列中存储值的标准Python数据类型。Set是另一种标准Python数据类型,也可用于存储值。它们之间的主要区别在于,与列表和元组不同,集合中的每个元素不能出现多次,而是无序存储。
Python 集合的优势一个集合中的元素不能出现超过一次,因此集合可以有效地从列表或元组中删除重复值,并执行常见的数学运算,如并、交等。
本教程介绍了几个关于Python集合和集合论的主题。
如何初始化空集和值集;如何向集合中添加值;如何从集合中删除值;如何高效利用收藏?用于成员检测、从列表中删除重复值和其他任务。执行常见集合运算(如并、交、差和对称差)的方法。可变集和不可变集的区别就在于这个大纲。我们开始吧。
集合初始化集合是一种可变的数据组织形式,具有确定的(唯一的)不变元素,并且元素是无序的。
您可以使用“set()”操作来初始化一组空白。
如果要用值初始化集合,可以将列表传递给emptySet=set。
datascientist=set([python , r , SQL , Git , Tableau , SAS ])(data engineer=set))(python)
如果您查看上述“dataScientist”和“dataEngineer”集合中的变量,您会发现集合中元素值的顺序与它们被添加时的顺序不同。这是因为集合顺序错误。
还可以用花括号初始化集合中包含的值。
dataScientist={Python , r , SQL , Git , Tableau , SAS}dataEngineer={Python , Java ,
请注意,花括号只能用于初始化包含值的集合。使用不带值的花括号是初始化dictionary (dict)的方法之一,但不是初始化collection的方法,如下图所示。
要在向集合添加值或删除值集合中添加或移除值,必须首先初始化该集合。
# initializesetwithvaluesgraphicdesigner={ indesign , Photoshop , Acrobat , Premiere , bridge}http://www
您可以使用“add”方法向集合中添加值。
平面设计师. add (illustrator).
请注意,只有不可变的值,如字符串或元组,才能添加到集合中。例如,如果您尝试将列表“list”添加到集合中,将返回类型错误“TyprError”。
平面设计师. add ([ PowerPoint , Blender]
有几种方法可以从向集合中添加值集合中删除值。
358 www.Sina.com/:可以使用“remove”方法从集合中删除值。
平面设计师. remove (illustrator)).
这种方法的一个缺点是,如果试图删除集合中不存在的值,它将返回键值错误“KeyError”。
您可以使用3358www.Sina.com/discard方法从集合中删除值。
平面设计师. discard ( premiere))。
与“remove”方法相比,此方法的优势在于,当试图删除集合中不存在的值时,系统不会返回“KeyError”。如果你熟悉dict的数据结构
您可能会发现这种方法的工作方式与字典中的“get”方法类似。
选项3:也可以使用“pop”方法从集合中删除并返回任意值。
graphicDesigner.pop()
请注意,如果集合为空,此方法将返回一个“KeyError”。
删除集合中所有的值您可以使用“清除”方法删除集合中的所有值。
graphicDesigner.clear()
在集合上进行迭代
与许多标准Python数据类型一样,用户可以对集合进行迭代。
# Initialize a setdataScientist={ Python , R , SQL , Git , Tableau , SAS } for skill in data scientist:print(skill)
如果你仔细观察“dataScientist”集合中的每一个打印值,你会发现集合中的值的打印顺序与它们相加的顺序是不同的。
将集合中的值变为有序
本教程向您强调了集合是无序的。如果您认为您需要以有序的形式从集合中获取值,您可以使用“sorted”函数,它将输出一个有序的列表。
类型(已排序(数据科学家))
以下代码按字母降序输出“dataScientist”集合中的值(此处为Z-A)。
已排序(数据科学家,反向=真)
删除列表中的重复项首先,我们必须强调,set是从列表中删除重复值的最快方法。为了证明这一点,我们来研究以下两种方法的区别。
方法 1:使用集合删除列表中的重复值。
Print(list(set([1,2,3,1,7)))方法2:使用列表派生删除列表中的重复值。
性能差异可以通过“timeit”库来衡量,它允许您对Python代码计时。以下代码将每个方法运行10,000次,并以秒为单位输出总时间。
比较两种方法,结果表明使用集合删除重复值更有效。虽然时差看起来很小,但是当你有一个非常大的列表时,它实际上可以节省你很多时间。
集合运算方法Python中常用的set方法是进行标准的数学运算,如并、交、差、对称差等。下图显示了对集合A和集合b执行的一些标准数学运算。每个zxdcc(Venn)图中的红色部分是给定集合运算的结果。
Python集合提供了一些方法,使您能够执行这些数学运算,还提供了一些运算符,为您提供了等效的结果。在研究这些方法之前,我们先初始化两个集合“dataScientist”和“dataEngineer”。
dataScientist=set([Python , R , SQL , Git , Tableau , SAS ])data engineer=set([ Python , Java , Scala , Git , SQL , Hadoop])
并集
表示为“dataScientist dataEngineer”的联合是属于“dataScientist”或“dataEngineer”或两者的元素的集合。您可以使用“union”方法来查找两个集合中的所有唯一值。
# set内置函数uniondatascientist . union(data engineer)# Equivalent ResultdataScientist data engineer
union操作返回的集合可以在下面的zxdcc(Venn)图中显示为红色部分。
交集
集合“dataScientist”和“dataEngineer”的交集可以表示为“dataScientist dataEngineer”,它是属于这两个集合的所有元素的集合。
交集运算返回的集合可以在下面的zxdcc图中显示为红色部分。
您可能会发现,您会遇到这样的情况:您希望确保两个集合没有公共值。换句话说,你想得到两个交集是空的集合。这两个集合称为互斥集合。您可以使用“isdisjoint”方法来测试这两个集合是否互斥。
你会注意到,在下面zxdcc图所示的交集中,“dataScientist”和“graphicDesigner”没有共同的值。
差集
dataScientist和dataEngineer集合的区别可以表示为“dataScientist dataEngineer”,它是属于“dataScientist”而不是“dataEngineer”的所有元素的集合。
差分运算返回的结果可以在下面的zxdcc图中可视化为红色部分。
对称集
“dataScientist”和“dataEngineer”的对称集合,表示为“dataScientist dataEngineer”,是属于两个集合但不属于它们的公共部分的集合。
对称集合运算返回的结果可以可视化为下面zxdcc图中的红色部分。
集合推导式
你可能以前学过列表派生、字典派生和生成器派生。这里还有一个集合推导。集合导子与它们非常相似。Python中的集合派生可以按照以下方法构造:
{以技能换技能[SQL , SQL , PYTHON , PYTHON]}
上面的输出是一个有2个值的集合,因为集合中的同一个元素不能出现多次。使用集合派生的动机是通过手动执行数学运算在代码中编写和派生公式。
{如果技能不在{GIT , PYTHON , JAVA}}中,则为[GIT , PYTHON , SQL]中技能的技能
上面的代码和你之前学的差集差不多,但是看起来有点不一样。
成员检测
成员检测可以检查特定元素是否包含在序列中,例如字符串、列表、元组或集合。在Python中使用集合的一个主要优点是,它们针对Python中的成员检测进行了深度优化。例如,检测一个集合的成员比检测一个列表的成员更有效。如果你是计算机专业的,我们可以说这是因为集合中的成员检测平均时间复杂度为O(1),列表中的成员检测平均时间复杂度为O(n)。
以下代码显示了使用列表进行成员检测的过程:
在集合中也可以进行类似的操作,但是集合的效率更高。
由于“possibleSet”是一个集合,“Python”是集合“possibleSet”中的一个元素,所以这可以表示为“Python possibleSet”。如果你有一个不属于集合的值,比如“Fortran”,这可以表示为“Fortran 可能集合”。
子集
实际上,集合的成员和成员的组合是一个子集。我们先初始化两组。
possibleSkills={Python , R , SQL , Git , Tableau , SAS}mySkills={Python , R}
如果集合“mySkills”中的每一个值都属于集合“possibleSkills”,那么“mySkills”称为“possibleSkills”的子集,数学上写成“我的技能可能的技能”。您可以使用“issubset”方法来检查一个集合是否是另一个集合的子集。
my skills . issubset(possible skills)
因为在这个例子中,这个方法返回“真”。在下面的zxdcc图中,请注意“mySkills”中的每个值也在集合“possibleSkills”中。
不可变集
我们经常可以看到嵌套的列表或元组,它们的元素可能是另一个列表或元组。
#嵌套列表和tuplenestedlists=[ the ,12],[to ,11],[of ,9],[and ,7],[that ,6]]Nested tuples=( the ,12),( to ,11),( of ,9),( and ,7),( that ,6))
嵌套的问题是一个集合通常不能包含像集合这样的变量值。在这种情况下,您可能希望使用不可变的集合。不可变集合与可变集合非常相似,只是值不能改变。您可以使用“frozenset()”来创建一个不可变的集合。
# Initialize a frozenset immutableset=frozenset()
如果您使用如下所示的不可变集合,您可以创建一个嵌套集合。
nestedSets=set([frozenset()])
重要的是,你需要记住不可变集合的一个主要缺点是,由于它们是不可变的,这意味着你不能向它们添加元素或从中删除元素。
结语Python套很实用。它可以有效地从数据结构(如列表)中删除重复值,并执行常见的数学运算,如并集和交集。人们经常遇到的挑战之一是何时使用各种数据类型,如集合或字典。作者希望本文能展示集合的基本概念,帮助我们在不同的任务中使用不同的数据类型。更多Python视频、源代码和资料可免费获得,电话:683380553。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。