数据类型拓展之集和

一、定义:在{}内用逗号隔开多个元素。

二、集和内元素的特点

  1:类型:集合内元素必须为不可变类型。

a = {1,'abc'}  # 一个正确的集和
b = {1,'abc',[2,3,4]}  # 报错,集和内不可以包含列表这种可变类型

  2:无序:集合内元素无序排列,也就是说集和内的个体元素无法按索引取得。

  3:不重:集合内元素没有重复,若给集和定义多个相同元素,也会被作为一个元素存入集和。

a = {1, 1, 1, 2, 3, 4}
print(a)  # 结果为 {1, 2, 3, 4}

三、空集和与空字典

a = {}  # 此时是创建了一个空字典
b = set()  # 必须使用set创建空集和

四、类型转换:只能把可迭代且迭代出的每个元素为不可变类型的对象转换为集和

a = set('abc')
print(a)  # 结果为 {'a', 'b', 'c'}
b = set([1, 2, 3])
print(b)  # 结果为 {1, 2, 3}
c = set({'a': 1, 'b': 2})
print(c)  # 把key作为元素,结果为 {'a', 'b'}
d = set(1, 2, [3, 4])
print(d)  # 元素包含可变类型,报错

五、关系运算符,使用关系运算符会返回结果,且不影响原集和,每个关系运算符都对应一个内置功能,用符号和用功能名起到作用一样。

  1、取交集 &,功能名intersection:取得两集和的共同部分作为新的集和返回。

a = {1, 2, 3}
b = {1, 2, 4}
print(a & b)  # 结果为 {1, 2}
print(a.intersection(b))  # 结果为 {1, 2}
# 两种方法功能完全一样,使用此功能两集和没有主次之分,地位一样

  2、取合集 |,功能名union:将两集和的所有元素作为新集和返回。

a = {1, 2, 3}
b = {1, 2, 4}
print(a | b)  # 结果为 {1, 2, 3, 4}
print(a.union(b))  # 结果为 {1, 2, 3, 4}
# 两种方法功能完全一样,使用此功能两集和没有主次之分,地位一样

  3、对称差集 ^,功能名symmertric_difference:将两集和合并且去掉共同部分作为新集和返回。

扫描二维码关注公众号,回复: 9793652 查看本文章
a = {1, 2, 3}
b = {1, 2, 4}
print(a ^ b)  # 结果为 {3, 4}
print(a.symmetric_difference(b))  # 结果为 {3, 4}
# 两种方法功能完全一样,使用此功能两集和没有主次之分,地位一样

  4、独差集 -,功能名difference:把两集和中其中一个集和去掉两者共同部分后剩余元素作为新集和返回。

a = {1, 2, 3, 33}
b = {1, 2, 4, 44}
print(a - b)  # 结果为 {33, 3}
print(a.difference(b))  # 结果为 {33, 3}
print(b - a)  # 结果为 {4, 44}
print(b.difference(a))  # 结果为 {4, 44}
# 两种方法功能完全一样,使用此功能返回左边集和的剩余元素。

  5、父子集--比较运算符,功能名issuperset,issubset:用于判断包含与否。

a1 = {1, 2, 3}
a2 = {2, 3, 1}
b = {1, 2}
c = {1, 2, 4}
print(b < a1)  # 一个集和的元素全部被包含于另一个集和,则这两个集和称为父子集和,用大于号或小于号比较父子集和关系,结果为 True
print(a1 == a2)  # 两个集和的元素完全一样,则这两个集和互为父子集和,用等等号比较关系,结果为 True
print(a1 < c)  # 两个集和只要互相有不存在于对方集和内的元素,则不产生父子集合的关系,结果为 False
print(a1 != c)  # 结果为 True
print(a1.issuperset(b))  # 等同于大于号功能,结果为 True
print(b.issubset(a1))  # 等同于小于号功能,结果为 True

六、内置功能

  1:长度len,成员运算in,for循环:类似于列表及元组等。

a = {1, 2, 3}
print(len(a))  # 结果为 3
print(1 in a)  # 结果为 True
for x in a:
    print(x)  # 结果为 1  2  3

  2、查删discard与删除remove:都没有返回值。

a = {1, 2, 3}
a.discard(3)  # 查找集和中是否有元素3,找到则删除
print(a)  # 结果为 {1, 2}
a.discard(4)  # 找不到声明的元素,则不进行任何操作
a.remove(4)  # 使用remove若集和中不存在声明的元素,则报错

  3、更新updata:将新集和的元素拷贝进老集合,老集合变为两者合集,新集和无影响。

a = {1, 2, 3}
b = {1, 2, 4}
a.update(b)
print(a)  # 结果为 {1, 2, 3, 4}
print(b)  # 结果为 {1, 2, 4}

  4、移出pop:类似列表等,但是pop后面不可填入内容,只能随机移出。

a = {1, 2, 3}
print(a.pop())  # 随机出的结果为 1
print(a)  # 机出的结果为 {2, 3}

  5、加入add:往集和中加入元素,位置随机。

a = {1, 2, 3}
a.add(10)
print(a)  # 随机出的结果为 {10, 1, 2, 3}

  6、独立更新difference_updata:老元素与新元素比较后老元素只留下自己不同的部分,新元素无影响。

a = {1, 2, 3, 33}
b = {1, 2, 4}
a.difference_update(b)
print(a)  # 结果为 {33, 3}
print(b)  # 结果为 {1, 2, 4}

  7、完全不同判断isdisjoint:判断两个集和是否完全独立,没有任何共同部分。

a = {1, 2, 3}
b = {11, 22, 33}
print(a.isdisjoint(b))  # 结果为 True

猜你喜欢

转载自www.cnblogs.com/caoyu080202201/p/12470574.html
今日推荐