python.集合转列表_Python的set集合详解

cebff10636aaeef68a1a58a6ec2140c7.png

Python 还包含了一个数据类型 —— set (集合)。 集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。 集合对象还支持 union(联合),intersection(交),difference(差)和 sysmmetric difference(对称差集)等数学运算。

创建集合set

大括号或 set() 函数可以用来创建集合。  set集合类需要的参数必须是迭代器类型的,如:序列、字典等,然后转换成无序不重复的元素集。由于集合是不重复的,所以可以对字符串、列表、元组进行去重操作。

1、创建空集合

>>> s=set()>>> sset()>>> s1=set([]) #列表>>> s1set()>>> s2=set(()) #元组>>> s2set()>>> s3=set({}) #字典>>> s3set()
注意:想要创建空集合,你必须使用 set() 而不是 {}。后者用于创建空字典,我们在后面介绍的一种数据结构。 2、创建非空集合

即列表,元组,字典不在是空值,举两个例子
>>> s1=set([1,2,3,4])>>> s1{1, 2, 3, 4}  >>> s3=set({'a':2,'b':3,'c':4})>>> s3{'c', 'a', 'b'}
注:字典转set集合,需要注意的是,只取了字典的key,相当于将字典中的dict.keys()列表转成set集合。

集合的操作

1、集合添加

集合的添加有两种方式,分别是add和update。但是它们在添加元素时是由区别的:
  • add()方法

    把要传入的元素作为一个整体添加到集合中,如:

>>> s=set('one')>>> s{'e', 'o', 'n'}>>> s.add('two')>>> s{'e', 'two', 'o', 'n'}
  • update()方法

    是把要传入的元素拆分成单个字符,存于集合中,并去掉重复的字符。

    可以一次添加多个值,如:

>>> s=set('one')>>> s{'e', 'o', 'n'}>>> s.update('two')>>> s{'e', 'n', 't', 'w', 'o'}

2、集合删除

集合的删除操作使用的方法跟列表是一样的,使用的也是remove方法。如:

setVar.remove(element)

  • setVar :为一个set类型的变量

  • element :表示要查找并删除的元素

  • 函数作用:

  • 在集合setVar中查找element元素,如果存在则删除;如果没找到,则报错。

>>> s=set('one')>>> s{'e', 'o', 'n'}>>> s.remove('e')>>> s{'n', 'o'}

setVar.discard(element)

  • setVar :为一个set类型的变量

  • element :表示要查找并删除的元素

  • 函数作用:

  • 在集合setVar中查找element元素,如果存在则删除;如果没找到,则什么也不做。

>>> sListset([1, 2, 3, 4, 5])>>> sList.discard(1)>>> sListset([2, 3, 4, 5])

s.pop()

  • s:为set类型的变量

  • 函数作用:

  • 删除并返回set类型的s中的一个不确定的元素,如果为空引发KeyError错误。

>>> sListset([2, 3, 4, 5])>>> sList.pop()2

s.clear()

  • s:set类型的变量

  • 函数作用:

  • 清空s集合中的所有元素

>>> sListset([3, 4, 5])>>> sList.clear()>>> sListset([])

3、集合的遍历

集合的遍历跟序列的遍历方法完全一样。
>>> s=set('one')>>> s{'e', 'o', 'n'}>>> for i in s:    print(i)... ...eon>>>
另一种遍历方式:
>>> s=set('one')>>> s{'e', 'o', 'n'}>>> for idex,i in enumerate(s):        print (idex,i)... ...0 e1 o2 n>>>
变量idex表示集合中元素i的索引。

4、集合其他方法

893baa945c9190991aefbcfc74dd081d.png 集合的一些操作符

既然是集合,那就会遵循集合的一些操作方法,如求交集、并集、差集等。

1、交集

Python中求集合的交集使用的符号是“&”,返回连个集合的共同元素的集合,即集合的交集。

>>> st1 = set('python')>>> st1set(['h', 'o', 'n', 'p', 't', 'y'])>>> st2 = set('htc')>>> st2set(['h', 'c', 't'])>>> st1 & st2set(['h', 't'])

2、并集(合集)

Python中求集合的并集用的是符号“|”,返回的是两个集合所有的并去掉重复的元素的集合。

>>> st1set(['h', 'o', 'n', 'p', 't', 'y'])>>> st3 = set('two')>>> st3set(['o', 't', 'w'])>>> st1 | st3set(['p', 't', 'w', 'y', 'h', 'o', 'n'])

3、差集

Python中差集使用的符号是减号“-”。

>>> st1set(['1', '3', '2', '5', '4', '7', '6'])>>> st2 = set('4589')>>> st2set(['9', '8', '5', '4'])>>> st1 - st2set(['1', '3', '2', '7', '6'])

返回的结果是在集合st1中但不在集合st2中的元素的集合。

4、集合的不同

查看两个集合的不同之处,使用的difference函数,等价于差集。如:

s1.difference(s3)

这种不同指的是集合s3相对于集合s1,不同的地方,也就是所有在集合s1中,而不再集合s2中的的元素组成的新集合。

>>> s1set([1, 2, 3, 4, 5])>>> s2set([1, 2, 3, 4])>>> s1.difference(s2)set([5])>>> s3set(['1', '8', '9', '5'])>>> s1.difference(s3)set([1, 2, 3, 4, 5]

集合的范围判断

集合可以使用大于(>)、小于(=)、小于等于(<=)、等于(==)、不等于(!=)来判断某个集合是否完全包含于另一个集合,也可以使用子父集判断函数。

定义三个集合s1,s2,s3:

>>> s1=set([1, 2, 3, 4, 5])>>> s2=set([1, 2, 3, 4])>>> s3=set(['1', '8', '9', '5'])

大于(>)或大于等于(>=)

>>> s1 > s2True>>> s1 > s3False>>> s1 >= s2True

表示左边集合是否完全包含右边集合,如集合s1是否完全包含集合s2。

小于(

>>> s2 < s1True>>> s1 < s3False>>> s3 < s1False

表示左边的集合是否完全包含于右边的集合,如集合s1是否完全包含于集合s2。

等于(==)、不等于(!=)

>>> s1 == s2False>>> s2 == s3False>>> s1 != s2True

判断两个集合是否完全相同。

不可变集合frozenset

Python中还有一种不可改变的集合,那就是frozenset,不像set集合,可以增加删除集合中的元素,该集合中的内容是不可改变的,类似于字符串、元组。

>>> f = frozenset()>>> ffrozenset([])>>> f = frozenset('asdf')>>> ffrozenset(['a', 's', 'd', 'f'])>>> f = frozenset([1,2,3,4])>>> ffrozenset([1, 2, 3, 4])>>> f = frozenset((1,2,3,4))>>> ffrozenset([1, 2, 3, 4])>>> f = frozenset({1:2, 'a':2, 'c':3})>>> ffrozenset(['a', 1, 'c'])

- END -

文源网络,仅供学习之用,如有侵权,联系删除。往期精彩

15016de2ecf1515478fcb0c82c095260.png

◆  50款开源工具你都用过吗?

◆  python+C、C++混合编程的应用

◆  python网络爬虫的基本原理详解

89a67ade849c42ef98027742669cb931.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值