Python中一种元素唯一的无序数据类型,它是一个集合。什么是集合?集合是一种数据类型,其中每个元素的顺序不是固定的,而是唯一的。多么曲折的一句话,回味,一定回味好。集合中元素的内容必须是不可变类型,如整数、浮点数、字符串、元组等,不允许使用变量列表、字典和集合。集合本身是可变的,可以像列表一样添加或删除元素。截至目前,圆括号用于声明元组,方括号用于声明列表,大括号用于声明字典。套装呢?集合也在Python中用大括号声明。当然你也可以通过set函数创建一个集合。集合定义的语法格式如下:my_set={element1,element2,...}一个简单的代码示例如下:my_set={1,2,3,3,10,4,5,6}print(my_set)data输出后,你会发现只剩下一个重复的整数3。也是因为集合的元素是唯一的,重复的部分会被丢弃。如果将变量类型用作集合中的元素,则会报错。my_set={1,2,3,[3,10,4,5,6]}#错误提示:TypeError:unhashabletype:'list'print(my_set)这里需要注意的是空集的声明不能使用{},只有一个花括号代表一个空字典。声明一个空集合需要使用set函数。set函数定义一个集合使用set函数定义一个集合,并定义一个空集合。set函数参数可以是字符串、列表或元组。通过set定义一个空集合my_dict={}my_set=set()#空字典print(type(my_dict))#空集合print(type(my_set))set将字符串转为集合set函数类似于强制转换,你可以将其他类型转换为集合。my_set=set("mynameisxiangpica")print(my_set)这个内容会过滤掉重复的字母,输出的顺序不固定,因为set是无序的。集合可以去重元组。借助不允许重复的集合元素,可以实现一些特定的效果,比如去重。my_tuple=("apple","orange","orange","pear","banana","food")my_set=set(my_tuple)print(my_set)集合操作在学习集合相关操作之前,需要学习一些符号。Symbols&IntersectionUnion-Difference^SymmetricDifference的含义下面的内容和高中线代中的概念很像,就是求集合的交集和差集。Intersection(交集)交集就是找到两个集合的共同元素。my_set1={"apple","orange","pear","banana","food"}my_set2={"apple","orange","pear"}both=my_set1&my_set2print(both)除了通过&符号另外,也可以通过集合的交集方法来完成。my_set1={“苹果”、“橙子”、“梨”、“香蕉”、“食物”}my_set2={“苹果”、“橙子”、“梨”}both=my_set1.intersection(my_set2)print(both)并集(union)并集就是取所有集合的所有元素,有重复则保留一个。这是使用符号|完成的。或联合方法。my_set1={“苹果”、“橙子”、“梨”、“香蕉”、“食物”}my_set2={“苹果”、“橙子”、“梨”}both=my_set1|my_set2print(both)是使用union完成的。my_set1={“苹果”、“橙子”、“梨”、“香蕉”、“食物”}my_set2={“苹果”、“橙子”、“梨”}both=my_set1.union(my_set2)print(both)差集(difference)不同于集合的交集和并集。例如属于A但不属于B,则表示为A-B。同样,如果属于B但不属于A,则表示为B-A。差值的符号是-,可以用差值法计算。my_set1={"apple","orange","pear","banana","food"}my_set2={"apple","orange","pear","grape"}#求解属于A,但不属于AElementsofBdif1=my_set1-my_set2print(dif1)#求解属于B但不属于A的元素dif2=my_set2-my_set1print(dif2)接下来,如何使用差分法求差集就交给大家了。对称差分(symmetricdifference)A和B两个集合,如果想得到属于A或B集合的元素,但是不属于A的元素和属于B的元素,那么这就是对称差分的应用场景。对称差异的符号是^,方法名称是symmetric_difference。my_set1={“苹果”、“橙子”、“梨”、“香蕉”、“食物”}my_set2={“苹果”、“橙子”、“梨”、“葡萄”}dif=my_set1^my_set2print(dif)上面的代码会输出既不属于A也不属于B的元素,即对称差分集。集合的方法集合的增删改查add方法可以向集合中添加元素。语法格式如下:my_set.add(addingelements)需要注意的第一个新元素如果集合中已经存在则不会添加。第二个需要注意的一点是集合是无序的,新添加的元素的位置是不会确定的。my_set={"apple","orange","pear","grape"}my_set.add("new")my_set.add("new")print(my_set)remove方法可以删除集合中的元素,前提是该元素在集合中,删除不存在的元素会报错。my_set={"apple","orange","pear","grape"}my_set.remove("apple")print(my_set)#第二次删除报错,因为apple已经不在set中了my_set.remove("apple")print(my_set)discard方法可以删除set元素,如果元素不存在,则不会报错。my_set={"apple","orange","pear","grape"}my_set.discard("apple")print(my_set)my_set.discard("apple")print(my_set)pop方法是随机删除一个element,会返回被删除的元素,即可以用一个变量来接收被删除的元素,如果集合为空,使用pop时会报错。my_set1={"apple","orange","pear","grape"}#pop方法随机删除一个元素,并返回删除的元素var=my_set1.pop()print(var)#使用pop方法进行空集错误my_set2=set()var=my_set2.pop()print(var)clear方法删除了集合中的所有元素my_set1={"apple","orange","pear","grape"}my_set1.clear()print(my_set1)set的其他方法isdisjoint方法用于判断两个集合是否有相同的元素,如果不相同则返回True,否则返回False。my_set1={"apple","orange","pear","grape"}my_set2={"banana","watermelon"}#两个集合没有相同的元素ret_bool=my_set1.isdisjoint(my_set2)print(ret_bool)#returnTruemy_set1={"apple","orange","pear","grape"}my_set2={"banana","watermelon","apple"}#两个集合有相同的元素ret_bool=my_set1.isdisjoint(my_set2)print(ret_bool)issubset该方法用于判断一个集合是否是另一个集合的子集,如果判断则返回True,否则返回False。my_set1={"apple","orange","pear","grape"}my_set2={"banana","watermelon"}#第二组不是第一组的子集ret_bool=my_set2.issubset(my_set1)print(ret_bool)#ReturnFalse#第二组是第一组的子集my_set1={"apple","orange","pear","grape"}my_set2={"orange","apple"}ret_bool=my_set2.issubset(my_set1)print(ret_bool)#返回True,注意判断A是B的子集,格式为A.issubset(B),顺序不要弄错。issuperset方法用于判断一个集合是否是另一个集合的父集合,与issubset刚好相反,具体实现由你自己完成。update方法用于将一个集合的元素添加到另一个集合中,语法格式如下:添加的集合A.update(待添加的集合B)该方法先到先添加。my_set1={"apple","orange","pear","grape"}my_set2={"banana","watermelon"}my_set1.update(my_set2)print(my_set1)其他一些方法,本轮滚雪球阶段而已学习。intersection\_update该方法用于查找多个集合的交集。difference\_update删除一个集合中与另一个集合重复的元素。symmetric\_difference\_update类似对称差集的用法内置函数max,min,sum以上内置函数可用scopecollection和list的使用规则是一致的,可以自己测试。len获取集合元素的数量。sorted使用此函数对集合进行排序。frozenset集合中的元素可以增删改查,对应列表。还有一种集合是不能增删元素的,叫做frozencollection,可以对应tuples学习。冷冻收藏就不解释了,有兴趣的可以搜索一些,不过我觉得这节课的内容很多。这篇博客的总结是一个集合,一种容器数据类型,它是无序的,必须有唯一的元素。在Eraser的编程生涯中,集合经常被用来去重。它们高效、易于编写且值得掌握。下一篇博客开始,我们将进入Python函数的世界,难点来了~最后一碗毒鸡汤,当你学会破锅的时候,你会发现世界豁然开朗O(∩\_∩)呵呵~
