欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python数据类型: 集合类型

程序员文章站 2022-07-02 09:09:15
集合类型的定义方式: 在{}内逗号分隔多个元素,元素为不可变类型,不能重复,无序,所以没有索引s = {1.1, (1, 2), 11, 'hello'}集合类型转换, 集合类型不能取值, 如要取值, 可以再转换成列表类型再取值s = set([11, "hello", 1.1, (1, 2)])集合类型的常用操作集合的关系运算l1 = {1, 2, 3, 4, 5, 6}l2 = {2, 4, 6, 8, 10, 12}集合的关系运算 : 交集, 不考虑顺序res = l1 &am...

集合类型的定义方式: 在{}内逗号分隔多个元素,元素为不可变类型,不能重复,无序,所以没有索引

s = {1.1, (1, 2), 11, 'hello'}

集合类型转换, 集合类型不能取值, 如要取值, 可以再转换成列表类型再取值

s = set([11, "hello", 1.1, (1, 2)])

集合类型的常用操作

集合的关系运算

l1 = {1, 2, 3, 4, 5, 6}
l2 = {2, 4, 6, 8, 10, 12}

集合的关系运算 : 交集, 不考虑顺序

res = l1 & l2  # {2, 4, 6}
res = l1.intersection(l2)  # 内置方法取交集, {2, 4, 6}

效果类似于for循环, 但是for有顺序, 还可以用于字符串,列表,元组,字典

l = []
for ll in l1:
    if ll in l2:
        l.append(ll)
print(l)

集合的关系运算 : 并集

res = l1 | l2  # {1, 2, 3, 4, 5, 6, 8, 10, 12}
res = l1.union(l2)  # 内置方法取并集, {1, 2, 3, 4, 5, 6, 8, 10, 12}

集合的关系运算 : 差集

res1 = l1 - l2  # {1, 3, 5}
res1 = l1.difference(l2)  # 内置方法差集, {1, 3, 5}
res2 = l2 - l1  # {8, 10, 12}

集合的关系运算 : 对称差集, 类似(l1 - l2) | (l2 - l1)

res = l1 ^ l2  # {1, 3, 5, 8, 10, 12}
res = l1.symmetric_difference(l2)  # 内置方法对称差集,{1, 3, 5, 8, 10, 12}

集合的关系运算 : 父子集, 包含与被包含, 两个集合相等则互为父子

s1 = {1, 2, 3}
s2 = {1, 2}
print(s1 >= s2)  # True, 包含
print(s1 > s2)  # True, 包含
print(s1.issuperset(s2))  # True, 内置方法父子集
print(s2.issubset(s1))  # True, 内置方法父子集

内置方法: intersection_update, add, update, pop, remove, discard

s1 = {1, 2, 3}
s2 = {1, 2, 4, 5}
s1.intersection_update(s2)  # 取交集后赋值s1 = {1, 2}
s1.add("hello")  # 对比update, 一次只能加一个值
s1.update({2, 3, 4, 5})  # 新集合附加后去重,可以加多个值s1 = {1, 2, 3, 4, 5}
res = s1.pop()  # 随机取走
s1.remove(3)  # 删一个值, 没返回值, 删的元素不存在则报错
s1.discard(44)  # 删的元素不存在也不报错
res = s1.isdisjoint(s2)  # False, 两个集合没交集则返回True

本文地址:https://blog.csdn.net/iarchangel/article/details/107642384