python学习(30)_集合_2

遍历集合
In 遍历
>>> s1
{4, 'a', 'x', 'c', 'b'}

>>> for value in s1:
...     print(value)
...
4
a
x
c
b

使用enumerate进行遍历
>>> for index,value in enumerate(s1):
...     print(index,value)
...
0 4
1 a
2 x
3 c
4 b

集合转换成字符串
>>> s1
{4, 'a', 'x', 'c', 'b'}

>>> s = "".join({str(v) for v in s1})
>>> s
'axcb4'

>>> set1 = {"a","b","c"}
>>> "".join(set1)
'cba'

集合转换成元组
>>> s1
{4, 'a', 'x', 'c', 'b'}
>>> t = tuple(s1)
>>> t
(4, 'a', 'x', 'c', 'b')

集合转列表
>>> lst = list(s1)
>>> lst
[4, 'a', 'x', 'c', 'b']

set.clear()清空集合

>>> s1
{4, 'a', 'x', 'c', 'b'}
>>> s1.clear()
>>> s1
set()

set.copy()复制集合
>>> s1 = set("abcd")
>>> s1
{'c', 'd', 'b', 'a'}
>>> s2 = s1.copy()
>>> s2
{'c', 'd', 'b', 'a'}

len(set)求集合长度
>>> print (len(s1))
4

交集
利用 & 符号
>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}
>>> s1&s2
{3, 4}

set1.intersection(set2)
>>> s1.intersection(s2)
{3, 4}

set1.intersection_update(set2)
交集更新操作
返回两个集合的交集,set1中其他元素被删除
>>> s1
{1, 2, 3, 4}
>>> s2
{3, 4, 5, 6}

>>> s1.intersection_update(s2)
>>> s1
{3, 4}

并集 
利用 | 符号
>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}
>>> s1|s2
{1, 2, 3, 4, 5, 6}

set1.union(set2)
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6}

set1.update(set2)
并集更新操作,set2中的元素被添加到set1
>>> s1.update(s2)
>>> s1
{1, 2, 3, 4, 5, 6}

差集 
利用 - 减号
>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}
>>> s1-s2
{1, 2}

set1.difference(set2)
>>> s1.difference(s2)
{1, 2}

Set1.difference_update(set2)
差集更新操作,返回set1和set2的差集,set1中的其他不在set2中的元素被删除
>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}

>>> s1.difference_update(s2)
>>> s1
{1, 2}

set1.symmetric_difference(set2)对称差集
两个集合中所有不属于两个集合交集的元素

对称差集:集合A与集合B的对称差集定义为集合A与集合B中所有不属于A∩B的元素的集合,记为A△B,也就是说A△B={x|x∈A∪B,x∉A∩B},即A△B=(A∪B)—(A∩B).也就是A△B=(A—B)∪(B—A)

>>> s1.symmetric_difference(s2)
{1, 2, 5, 6}

set1.symmetric_difference_update(set2)对称差集更新操作
Set1返回两个集合的对称差集
>>> s1.symmetric_difference_update(s2)
>>> s1
{1, 2, 5, 6}

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

> 是左边集合是否完全包含右边集合

>>> a = {"a","b","c"}
>>> a
{'c', 'b', 'a'}
>>> b = {"a","b"}
>>> b
{'b', 'a'}
>>> a > b
True
>>> c = {"a","d"}
>>> a > c
False

set1.issuperset(set2)
判断set1是否是set2的超集

>>> a
{1, 2, 3, 4, 5, 6, 7}
>>> b
{1, 2, 3, 4}
>>> a.issuperset(b)
True

set1.issubset(set2)
判断set1是否是set2的子集
>>> a
{1, 2, 3, 4, 5, 6, 7}
>>> b
{1, 2, 3, 4}
>>> b.issubset(a)
True

set1.isdisjoint(set2)是否不存在交集
判断两个集合是否不存在交集,如果两个集合没有交集,返回True,如果有交集返回False

>>> a = {1,3}
>>> b = {4,6}
>>> a.isdisjoint(b)
True

>>> s1
{1, 2, 5, 6}
>>> s2
{3, 4, 5, 6}
>>> s1.isdisjoint(s2)
False

集合推导式
基本集合推倒式

>>> a = {1,2,3,4}
>>> {i*2 for i in a}
{8, 2, 4, 6}

>>> {i*2 for i in range(5)}
{0, 2, 4, 6, 8}

带if条件的集合推导式
>>> {i**2 for i in a  if i%2==0}
{16, 4}

多层循环集合推导式
>>> {x+y for x in a for y in b}
{'bx', 'ay', 'cx', 'ax', 'by', 'bz', 'cz', 'az', 'cy'}
上一篇:leetcode 2127. 参加会议的最多员工数


下一篇:集合基本操作 Python DAY2