Python数据结构之集合类型(set)

集合类型(set)

  • 集合定义

  • 集合-增加元素

  • 集合-删除元素

  • 集合-查看元素

  • 交集

  • 并集

  • 差集

  • 反交集

  • 子集与超集

  • set内置函数

  • frozenset不可变集合,让集合变成不可变类型;

一、集合定义

  集合(set)是一个无序的、元素不重复的序列;

  集合的元素都是不可变类型的

  使用大括号 { } 或者set()函数创建,注意:创建一个空集合必须使用set()而不是 { },因为 { } 是用来创建一个空字典;

  创建集合:

se = {"a","b","c",(1,2,3)}
se1 = set("123")
se2 = set((1,2,3,4,5,))
print(se)
print(se1)
print(se2)
---------------------输出结果----------------------------------
{'c', 'b', 'a', (1, 2, 3)}
{'3', '1', '2'}
{1, 2, 3, 4, 5}

 

二、集合-增加元素

  1.s.add(x)

  说明:将元素x添加到集合s中,如果元素已存在,则不进行任何操作;

  实例:

se = set(("zjk","china","beijing"))
se.add("hello world")
print(se)

--------------------输出结果---------------------
{'beijing', 'china', 'zjk', 'hello world'}

  2.s.update(x)

  说明:添加元素,参数可以是列表,元组、字典等;

  实例:

se = {"a","b","c","d","e"}
se.update([1,2,3,4,5])
print(se)

-------------输出结果-------------------
{'a', 1, 2, 3, 'e', 'b', 4, 5, 'c', 'd'}

 

三、集合-删除元素

  1.s.remove(x)

  说明:将元素x从集合s中删除,如果该元素不存在,则报错;

  实例:

se = {"a","b","c","d","e"}
se.remove("d")
print(se)

----------------输出结果---------------------
{'e', 'b', 'a', 'c'}

se = {"a","b","c","d","e"}
se.remove("dddd")
print(se)
-----------------输出结果------------------

Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/123.py", line 2, in <module>
se.remove("dddd")
KeyError: 'dddd'

  

  2.s.discard(x)

  说明:将元素x从集合中删除,如果该元素不存在,不会发生错误并返回当前集合

  实例:

se = {"a","b","c","d","e"}
se.discard("e")
print(se)
------------------输出结果-----------------------
{'d', 'a', 'b', 'c'}



se = {"a","b","c","d","e"}
se.discard("eeee")
print(se)
-----------------------输出结果-------------------
{'b', 'c', 'd', 'a', 'e'}

 

  3.pop()

  说明:随机删除集合的一个元素,并返回这个被删除的元素;

  实例:

se = {"a","b","c","d","e"}
a = se.pop()
print(se,a)

-----------------输出结果-------------------
{'c', 'b', 'e', 'a'} d

 

  4.s.clear()

  说明:清空集合s

  实例:

se = {"a","b","c","d","e"}
se.clear()
print(se)
------------输出结果---------------
set()

 

四、集合-查看元素

  通过for循环遍历集合的元素;

  实例:

>>> se = {"a","b","c",(1,2,3,4)}
>>> for n in se:
...     print(n)
... 
a
(1, 2, 3, 4)
c
b

 

五、交集(& 或者 intersection)

>>> se1 = {1,2,3,4,5}
>>> se2 = {4,5,6,7,8}
>>> print(se1 & se2)
{4, 5}
>>> print(se1.intersection(se2))
{4, 5}

 

六、并集(| 或者 union)

>>> se1 = {1,2,3,4,5}
>>> se2 = {4,5,6,7,8}
>>> print(se1 | se2)
{1, 2, 3, 4, 5, 6, 7, 8}
>>> print(se2.union(se1)
... )
{1, 2, 3, 4, 5, 6, 7, 8}

 

七、差集(- 或者 difference)

>>> se1 = {1,2,3,4,5}
>>> se2 = {4,5,6,7,8}
>>> print(se1 - se2)
{1, 2, 3}
>>> print(se1.difference(se2))
{1, 2, 3}

 

八、反交集(^ 或者 symmetric_difference)

>>> se1 = {1,2,3,4,5}
>>> se2 = {4,5,6,7,8}
>>> print(se1 ^ se2)
{1, 2, 3, 6, 7, 8}
>>> print(se1.symmetric_difference(se2))
{1, 2, 3, 6, 7, 8}

 

九、子集与超集

>>> se1 = {1,2,3}
>>> se2 = {1,2,3,4,5,6}

>>> print(se1 < se2)
True
>>> print(se1.issubset(se2))
True
#这两个用法相同,都是说明se1是se2的子集


>>> print(se2 > se1)
True
>>> print(se2.issuperset(se1))
True
#这两个都相同,都是说明se2是se1超集。

 

 

十、set内置函数

  1.add(self, *args, **kwargs)

  说明:向集合中添加元素;

  语法:set.add(*args, **kwargs)

  实例:

>>> se1.add(4)
>>> se1 = {1,2,3}
>>> se1.add(4)
>>> print(se1)
{1, 2, 3, 4}

  2.clear(self, *args, **kwargs)

  说明:清空集合;

  语法:set.clear()

  实例:

>>> se1 = {1,2,3}
>>> se1.clear()
>>> print(se1)
set()

  3.copy(self, *args, **kwargs)

  说明:返回集合的浅拷贝;

  语法:set.copy()

  实例:

>>> se1 = {1,2,3,(4,5,6)}
>>> se2 = se1.copy()
>>> print(se2)
{1, 2, 3, (4, 5, 6)}

  4.difference(self, *args, **kwargs)

  说明:将两个或多个集合的差集作为一个新集合返回;

  语法:se1.difference(se2)

  实例:

>>> se1 = {1,2,3,4,5}
>>> se2 = {4,5,6,7,8}
>>> print(se1 - se2)
{1, 2, 3}
>>> print(se1.difference(se2))
{1, 2, 3}

   5.difference_update(self, *args, **kwargs)

  说明:从这个集合中删除另一个集合的所有元素

  语法:set.difference_update(set1)

  实例:

>>> s = {1,2,3}
>>> s1 = {1,2,3,4}
>>> s2 = {2,3}
>>> s.difference_update(s2)
>>> s
{1}
>>> s1.difference_update(s2)
>>> s1
{1, 4}

  6.discard(self, *args, **kwargs)

  说明:删除集合中的一个元素,如果该元素不存在,则不执行任何操作;

  语法:set.discard(x)

  实例:

>>> s1 = {1,2,3,4}
>>> s1.discard(3)
>>> s1
{1, 2, 4}
>>> s1.discard("a")
>>> s1
{1, 2, 4}

  7.intersection(self, *args, **kwargs)

  说明:将两个集合的交集作为一个新集合返回

  语法:set.intersection(set1)

  实例:

>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}
>>> s3 = s1.intersection(s2)
>>> s3
{3, 4}

  8.intersection_update(self, *args, **kwargs)

  说明:用自己和另一个的交集来更新这个集合;

  语法:s.intersection_upfate(s2)

  实例:

>>> s = {"a","b","c","d","e"}
>>> s1 = {"c","d","e","e","f","g"}
>>> s.intersection_update(s1)
>>> s
{'d', 'c', 'e'}

  9.isdisjoint(self, *args, **kwargs)

  说明:如果两个集合有一个空交集,返回True

  语法:set.isdisjoint(set1)

  实例:

>>> s = {1,2}
>>> s1 = {3,4}
>>> s2 = {2,3}
>>> s.isdisjoint(s1)
True
>>> s.isdisjoint(s2)
False

  10.issubset(self, *args, **kwargs)

  说明:如果另一个集合包含这个集合,返回True

  语法:s.issubset(set1)

  实例:

>>> s = {1,2,3}
>>> s1 = {1,2,3,4}
>>> s2 = {2,3}
>>> s.issubset(s1)
True
>>> s.issubset(s2)
False
>>> s2.issubset(s)
True

  11.issuperset(self, *args, **kwargs)

  说明:如果这个集合包含另一个集合,返回True;

  语法:s.issuperset(s1)

  实例:

>>> s = {1,2,3}
>>> s1 = {1,2,3,4}
>>> s2 = {2,3}
>>> s1.issuperset(s)
True
>>> s.issuperset(s2)
True
>>> s2.issuperset(s1)
False

  12.pop(self, *args, **kwargs)

  说明:删除并返回任意的集合元素(如果集合为空,会引发KeyError)

  语法:s.pop()

  实例:

>>> s = {1,2,3,4,5,6}
>>> s.pop()
1
>>> s
{2, 3, 4, 5, 6}

  13.remove(self, *args, **kwargs)

  说明:删除集合中的一个元素(如果元素不存在,会引发KeyError)

  语法:set.remove(x)

  实例:

>>> s = {1,2,3,4,5,6}
>>> s.remove(4)
>>> s
{1, 2, 3, 5, 6}
>>> s.remove(99)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 99
>>> s
{1, 2, 3, 5, 6}

  14.symmetric_difference(self, *args, **kwargs)

  说明:将两个集合的对称差作为一个新集合返回(两个集合合并删除相同部分,其余保留)

  语法:s.symmetric_difference(s1)

  实例:

>>> s1 = {1,2,3,4,5,6,7,8}
>>> s2 = {3,4,5,6,7,8,9,10}
>>> s1.symmetric_difference(s2)
{1, 2, 9, 10}
>>> s2.symmetric_difference(s1)
{1, 2, 9, 10}

  15.symmetric_difference_update(self, *args, **kwargs)

  说明:用自己和另一个的对称差来更新这个集合

  语法:s.symmetric_difference_update(s1)

  实例:

>>> s = {1,2,3}
>>> s1 = {1,2,3,4}
>>> s2 = {2,3}
>>> s1.symmetric_difference_update(s)
>>> s1
{4}
>>> s1.symmetric_difference_update(s2)
>>> s1
{2, 3, 4}
>>> s.symmetric_difference_update(s2)
>>> s
{1}

  15.union(self, *args, **kwargs)

  说明:将集合的并集作为一个新集合返回;

  语法:s.union(s1)

  实例:

>>> s = {1,2,3,4,5,6}
>>> s1 = {3,4,5,6,7,8}
>>> print(s.union(s1))
{1, 2, 3, 4, 5, 6, 7, 8}
>>> print(s|s1)
{1, 2, 3, 4, 5, 6, 7, 8}

  16.update(self, *args, **kwargs)

  说明:用自己和另一个的并集来更新这个集合;

  语法:s.update(*args, **kwargs)

  实例:

>>> s = {"p","y"}
>>> s.update("t","h","o","n")
>>> s
{'p', 'h', 't', 'n', 'y', 'o'}
>>> s.update(["q","e"],{"l","l","o"})
>>> s
{'q', 'p', 'h', 't', 'n', 'y', 'o', 'e', 'l'}

 

十一、frozenset不可变集合,让集合变成不可变类型

 

>>> s = frozenset("zjk")
>>> print(s,type(s))
frozenset({'z', 'k', 'j'}) <class 'frozenset'>

 

转载于:https://www.cnblogs.com/zhangjunkang/p/9409963.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值