集合的定义
集合(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()
|