Python集合-B09

集合的定义

集合(set)的定义是把一定范围的、确定的、可以区别的事物当作一个整体来看待”,集合中的各个事物通常称为集合的元素。集合具有无序性、互异性、确定性。因此,Python中的集合肯定不能够支持索引运算,集合的互异性决定了集合中不能有重复元素。

集合的创建

# 创建集合的字面量语法(重复元素不会出现在集合中)
set1={1,1,2,3,1,1,2}
print(type(set1),len(set1))       # <class 'set'> 3
print(set1)                       # {1, 2, 3}
# 创建集合的构造器语法
set2=set('hello')
print(set2)                       # {'h', 'e', 'l', 'o'}
# 创建集合的生成式语法(将列表生成式的[]换成{})
set3 = {num for num in range(1, 20) if num % 3 == 0 or num % 5 == 0}
print(set3)                       # {3, 5, 6, 9, 10, 12, 15, 18}

# 遍历集合中的元素
for elem in set1:
    print(elem)                   # 1 2 3
# 空集合
set5=set()
print(type(set5))                 # <class 'set'>
print(set5)                       # set()

集合的运算

成员运算

set1 = {1, 2, 3, 4, 5}
set2 = {2, 4, 6, 8}
# 成员运算  -确定性(元素要么在集合中,要么不在)
# 集合的成员运算在效率上远远高于列表的成员运算
print(1 in set1)                    # True
print(1 not in set1)                # False

交并差运算

# 交集
print(set1 & set2)                  # {2, 4}
print(set1.intersection(set2))      # {2, 4}
# 并集
print(set1 | set2)                  # {1, 2, 3, 4, 5, 6, 8}
print(set1.union(set2))             # {1, 2, 3, 4, 5, 6, 8}
# 差集
print(set1-set2)                    # {1, 3, 5}
print(set1.difference(set2))        # {1, 3, 5}
print(set2-set1)                    # {8, 6}
print(set2.difference(set1))        # {8, 6}
# 对称查(并集-交集)
print(set1^set2)                    # {1, 3, 5, 6, 8}
print((set1|set2)-(set1&set2))      # {1, 3, 5, 6, 8}

比较运算

set3={1,2,3,4,5,6,7,8,9}
# 判断真子集
print(set1<set3)                    # True
# 判断子集
print(set1<=set3)                   # True
# 判断超集
print(set3>set2)                    # True

集合的操作

set1={'apple','banana','pitaya','apple'}
# 添加元素
set1.add('grape')
set1.add('durian')
print(set1)                 # {'banana', 'pitaya', 'apple', 'grape', 'durian'}
# 删除元素
set1.discard('pitaya')  # discar指定元素删除
set1.pop()   # 随机删除
print(set1)                 # {'apple', 'grape', 'durian'}
# 清空元素
set1.clear()
print(set1)                 # set()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值