关于python:Python八Python中的set集合每个人都是唯一的个体

38次阅读

共计 4106 个字符,预计需要花费 11 分钟才能阅读完成。

您好,我是码农飞哥,感谢您浏览本文,欢送一键三连哦
本文次要介绍 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