码迷,mamicode.com
首页 > 编程语言 > 详细

Python——数据类型之set

时间:2018-12-27 23:43:59      阅读:338      评论:0      收藏:0      [点我收藏+]

标签:disjoint   rac   rgs   min   als   nbsp   none   update   指定   

 本篇主要内容

? set集合的特点

? set集合的建立

? set集合的17个内置函数

? set集合的数学运算符号

1、set集合类型的特点。

1、无序

2、不同元素

3、元素必须不可变。(数字,字符串,元组都属于不可变的,列表,字典属于可变的。)

2、set集合的建立

a={Albert, QQ,XP}
print(type(a),a)

输出

<class set> {Albert, QQ, XP}

元素不可为可变数据类型

a={Albert, QQ,XP,(1,2,3)}
print(a)
b={Albert, QQ,XP,[1,2,3]}
print(b)

输出

{XP, (1, 2, 3), Albert, QQ}
Traceback (most recent call last):
  File "C:/Users/admin/PycharmProjects/temp.py", line 12, in <module>
    b={Albert, QQ,XP,[1,2,3]}
TypeError: unhashable type: list

也可以这样新建一个集合

a=set([Albert, QQ,XP])
print(a)

输出

{Albert, QQ, XP}

也就是遍历元素生成一个集合。

3、set的内置函数方法

(1)add(self, *args, **kwargs):这很简单的往集合里面放元素。

a=set([Albert, QQ,XP])
a.add(yzp)
print(a)

输出

{XP, Albert, QQ, yzp}

从输出可以看出来集合里面元素的存放是无序的。

注:一次只能加一个不可变元素。

(2)clear(self, *args, **kwargs):清空整个集合

(3)copy(self, *args, **kwargs):复制一个一模一样的集合(还是b=a与b=a.copy()的区别)

(4)difference(self, *args, **kwargs):得到多个集合的差集。

a={Albert, QQ,XP}
b={QQ,XP,yzp}
print(a.difference(b))

输出

{Albert}

直白的说就是a有而b没有的。

(5)difference_update(self, *args, **kwargs):求差集并更新这个集合

a={Albert, QQ,XP}
b={QQ,XP,yzp}
print(a.difference_update(b))
print(a)

输出

None
{Albert}

(6)discard(self, *args, **kwargs):删除集合里面的指定元素,如果不存在这个元素,什么也不做(不报错)

a={Albert, QQ,XP}
a.discard(QQ)
print(a)

输出

{XP, Albert

(7)intersection(self, *args, **kwargs):求交集

a={Albert, QQ,XP}
b={QQ,XP,yzp}
print(a.intersection(b))

输出

{QQ, XP}

通俗的来说就是ab都有的

(8)intersection_update(self, *args, **kwargs):求集并更新集合

a={Albert, QQ,XP}
b={QQ,XP,yzp}
print(a.intersection_update(b))
print(a)

输出

None
{XP, QQ}

(9)isdisjoint(self, *args, **kwargs):如果交集为空,返回true

a={Albert, QQ,XP}
b={QQ,XP,yzp}
print(a.isdisjoint(b))

输出

False

(10)issubset(self, *args, **kwargs),判断是不是被包含。

a={ QQ,XP}
b={QQ,XP,yzp}
print(a.issubset(b))

输出

True

(11)issuperset(self, *args, **kwargs):判断是不是包含

a={ Albert,QQ,XP}
b={QQ,XP}
print(a.issuperset(b))

输出

True

(12)pop(self, *args, **kwargs):随机删除一个元素,如果集合为空,则报错KeyError

a={ Albert,QQ,XP}
a.pop()
print(a)

输出

{QQ, XP}

 (13)remove(self, *args, **kwargs):删除指定元素,元素不存在则报错KeyError

a={ Albert,QQ,XP}
a.remove(Albert)
print(a)
a.remove(yzp)

输出

{QQ, XP}
Traceback (most recent call last):
  File "C:/Users/admin/PycharmProjects/temp.py", line 13, in <module>
    a.remove(yzp)
KeyError: yzp

 (14)symmetric_difference(self, *args, **kwargs):求交叉补集

a={ Albert,QQ,XP}
b={QQ,XP,yzp}
print(a.symmetric_difference(b))

 

输出

{Albert, yzp}

 

(15)symmetric_difference_update(self, *args, **kwargs):求交叉补集并更新集合

(16)union(self, *args, **kwargs):求并集

a={ Albert,QQ,XP}
b={QQ,XP,yzp}
print(a.union(b))

 

输出

{XP, QQ, yzp, Albert}

 

(17)update(self, *args, **kwargs):更新集合。也就是求并集并更新这个集合

 

a={ Albert,QQ,XP}
b={QQ,XP,yzp}
a.update(b)
print(a)

 

输出

{yzp, Albert, QQ, XP}

 4、数学运算符

求交集 a&b

求并集 a|b

求差集 a-b,或者b-a

求交叉补集 a^b

a={1,2,3}
b={2,3,4}
print(a&b)
print(a|b)
print(a-b)
print(b-a)
print(a^b)

 

输出

{2, 3}
{1, 2, 3, 4}
{1}
{4}
{1, 4}

Python——数据类型之set

标签:disjoint   rac   rgs   min   als   nbsp   none   update   指定   

原文地址:https://www.cnblogs.com/albert-yzp/p/10166476.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!