AI智能
改变未来

【Python】(八)Python中的set集合(每个人都是唯一的个体)

您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦本文主要介绍Python数据类型中的集合(set和frozenset),咱们一次把集合聊个透彻。
干货满满,建议收藏,需要用到时常看看。 小伙伴们如有问题及需要欢迎私信或者留言给我哦~ ~ ~。

集合是什么?

集合是什么呢?相信读者朋友们哪怕是没有用过集合这个数据类型。也一定在数学课堂上听过集合这个名词。数学中的集合是一个基本概念,说白了一堆不重复的数字可以组成一个集合。回到Python中集合的数据类型,它可以用来存放多个不重复的数据,并且这些数据的数据类型是不可变类型。这些不可变类型包括数字,字符串,元组。也就是说可变的数据类型如列表,字典是不能作为集合的元素的。Python中的集合分为两种,一种是set类型的集合,另一种是fronzenset类型的集合。这两种类型的集合的区别是:set集合可变,即可以添加,删除集合内部的元素,而fronzenset集合则不可变。即不能添加,删除集合内部的元素。set集合的定义是

{element1,element2,...,elementn}

, 其中,element1~elementn表示集合中的元素,个数没有限制。每个元素都是唯一的。

set集合怎么用?

创建set集合

创建set集合的方式有两种:第一种:通过

{}

方式创建,其语法格式是:

{element1,element2,...,elementn}

第二种:通过

set

函数, 其语法格式是:

set(iterable)

其中iterable不传的话,则会创建一个空的set对象。传入的iterable必须是可以遍历的序列,例如字符串,列表等。举个例子:

set_demo = {\'1\', 2, (\'码农\', \'飞哥\')}print(set_demo)list = [1, \'test\', 1, (\'码农\', \'飞哥\')]print(\'列表list结果=\', list)set_demo1 = set(list)print(\'生成的set结果=\', set_demo1)

运行结果是:

{2, (\'码农\', \'飞哥\'), \'1\'}列表list结果= [1, \'test\', 1, (\'码农\', \'飞哥\')]生成的set结果= {1, (\'码农\', \'飞哥\'), \'test\'}

可以看到列表list中哪怕有两个1元素,但是生成set集合之后还是只有一个1元素,也就是说在集合中值相同的元素只会存储一遍。

删除set集合

删除set集合可以通过del(setname)函数来删除,setname是要删除的set集合名称。

访问set集合元素

由于集合中的元素是无序的,因此五香向列表那样使用下标访问元素,Python中,访问集合元素最常用的方法是使用循环,将集合中的元素逐一读取出来。

set_demo = {\'1\', 2, (\'码农\', \'飞哥\')}for value in set_demo:print(value)

运行结果是:

2(\'码农\', \'飞哥\')1

元素的输出也是无序的。

删除集合中的元素

删除集合中的元素的方式有两种:第一种:通过remove()方法,其语法结构是:

setname.remove(element)

,其中,setname为待操作的set集合,element为需要删除的元素,如果删除失败的话则会报

KeyError

错误。第二种:通过discard()方法,其使用跟remove()方法一致,只是如果删除元素失败的话不会报错。

set_demo = {\'1\', 2, (\'码农\', \'飞哥\')}set_demo.remove(\'1\')print(\'删除元素1之后的集合=\', set_demo)set_demo.discard(\'5\')print(\'删除元素5之后的集合=\', set_demo)

运行结果是:

删除元素1之后的集合= {2, (\'码农\', \'飞哥\')}删除元素5之后的集合= {2, (\'码农\', \'飞哥\')}

向集合中添加元素

通过add函数可以向集合中添加元素,其语法结构是:

setname.add(element)

,其中setname是待操作的set集合,element是待添加的元素,只能添加不可变的元素,例如:数字,元组或者字符串,不能添加列表,字典,set集合这类可变的数据。举个例子:

set_demo.add(\'6\')print(\'添加元素6之后的结果是=\', set_demo)

运行结果是:

添加元素6之后的结果是= {2, \'6\', (\'码农\', \'飞哥\')}

set集合的交并补

在数学中集合是有交集并集和补集的。Python中的集合也是有这些概念的。

交集

通过

&

连接两个set集合就能生成一个新的集合,新集合取两个原集合的公共元素。

并集

通过

|

连接两个set集合就能生成一个新的集合,新集合取两个原集合的全部元素。

差集

通过

-

连接两个set集合就能生成一个新的集合,新集合取一个集合中有而另一个集合中没有的元素。举个栗子:

set_demo = {1, 3, 5, 6}set_demo1 = {2, 4, 6}print("取交集的结果=", set_demo & set_demo1)print("取并集的结果=", set_demo | set_demo1)print("取差集的结果=", set_demo - set_demo1)

运行结果是

取交集的结果= {6}取并集的结果= {1, 2, 3, 4, 5, 6}取差集的结果= {1, 3, 5}

set中的其他方法

通过dir(set)可以查看set集合中的所有方法。一共有如下方法:

[\'__and__\', \'__class__\', \'__contains__\', \'__delattr__\', \'__dir__\', \'__doc__\', \'__eq__\', \'__format__\', \'__ge__\', \'__getattribute__\', \'__gt__\', \'__hash__\', \'__iand__\', \'__init__\', \'__init_subclass__\', \'__ior__\', \'__isub__\', \'__iter__\', \'__ixor__\', \'__le__\', \'__len__\', \'__lt__\', \'__ne__\', \'__new__\', \'__or__\', \'__rand__\', \'__reduce__\', \'__reduce_ex__\', \'__repr__\', \'__ror__\', \'__rsub__\', \'__rxor__\', \'__setattr__\', \'__sizeof__\', \'__str__\', \'__sub__\', \'__subclasshook__\', \'__xor__\', \'add\', \'clear\', \'copy\', \'difference\', \'difference_update\', \'discard\', \'intersection\', \'intersection_update\', \'isdisjoint\', \'issubset\', \'issuperset\', \'pop\', \'remove\', \'symmetric_difference\', \'symmetric_difference_update\', \'union\', \'update\']

方法的命名比较规范,按照英文名都能猜测出方法的作用,在此就不在赘述每个方法的含义了。直接举例说明下:

set_demo = {1, 3, 5, 6}set_demo1 = {2, 4, 6}set_demo.update({12, (2, 3)})print(\'set_demo调用update方法之后\', set_demo)set_demo = {1, 3, 5, 6}print(\'set_demo调用union方法之后\', set_demo.union(set_demo1))print(\'set_demo调用difference方法之后\', set_demo.difference(set_demo1))print(\'set_demo调用__sub__方法之后\', set_demo.__sub__(set_demo1))

运行结果是:

set_demo调用update方法之后 {1, 3, (2, 3), 5, 6, 12}set_demo调用union方法之后 {1, 2, 3, 4, 5, 6}set_demo调用difference方法之后 {1, 3, 5}set_demo调用__sub__方法之后 {1, 3, 5}

frozenset 集合

frozenset集合是set集合的不可变版本,与set集合相比,frozenset集合中的元素不可变,也就是没有添加元素,删除元素的方法。创建一个frozenset集合的方式是通过frozenset()方法。 其语法格式是:

frozenset(iterable)

其中iterable不传的话,则会创建一个空的set对象。传入的iterable必须是可以遍历的序列,例如字符串,列表等。

frozenset_demo = frozenset(list)print("frozenset_demo的类型是=", type(frozenset_demo))print("frozenset_demo的结果=", frozenset_demo)

运行结果是:

frozenset_demo的类型是= <class \'frozenset\'>frozenset_demo的结果= frozenset({(\'码农\', \'飞哥\'), 1, \'test\'})

总结

本文详细介绍了Python中set集合的基本概念和详细用法,希望对读者朋友们有所帮助。

好文推荐

【Python从入门到精通】(七)Python字典(dict)让人人都能找到自己的另一半(键值对,成双成对)【Python从入门到精通】(六)Python内置的数据类型-列表(list)和元组(tuple),九浅一深,十个章节,不信你用不到【Python从入门到精通】(五)Python内置的数据类型-序列和字符串,没有女友,不是保姆,只有拿来就能用的干货【Python从入门到精通】(四)Python的内置数据类型有哪些呢?数字了解一下

我是码农飞哥,再次感谢您读完本文。全网同名【码农飞哥】。不积跬步,无以至千里,享受分享的快乐我是码农飞哥,再次感谢您读完本文

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 【Python】(八)Python中的set集合(每个人都是唯一的个体)