集合是一个无序的,不重复的数据组合,它的主要作用如下:
- 去重,把一个列表变成集合,就自动去重了
- 关系测试,测试两组数据之前的交集、差集、并集等关系
s = set ([3, 5, 9, 10]) # 创建一个数值集合
t = set ("Hello") # 创建一个唯一字符的集合
a = t | s # t 和 s的并集
b = t & s # t 和 s的交集
c = t - s # 求差集(项在t中,但不在s中)
d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)
基础功能
List = [1,2,5,6,8]
List = set(list) # 把list设置为集合;只要设置为集合,则会自动去重;
xx = set(('apple','pear')) # 创建一个含有多个元素的集合
print(xx)
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # 这里演示的是去重功能
# 增
basket.add('Love') # 集合中没有insert;
basket.update('Aa','Bb') # 参数可以是列表,元组,字典
basket.update( {"字符串"} ) # 将字符串添加到集合中。
basket.update( "字符串" ) # 将字符串拆分单个字符后,然后再一个个添加到集合中,有重复的会忽略。
# 删
#basket.remove('Aa') # 如果元素不存在,则会发生错误
basket.discard("Aa") # 如果元素不存在,不会发生错误discard,丢弃;
basket.pop() # 随机删除一个元素
basket.clear() # 清空集合
# 查
print(len(basket)) # 返回集合的长度
# 判断
print('a' in basket) # 'a' not in basket
集合操作
s = set([1,3,5,7])
t = set([2,3,4,5])
# 集合的并集
print(t | s) # t和s的并集
print(t.union(s))
# 集合的交集
print(set1.intersection(set2))
print(set1 & set2)
print(set1.isdisjoint(set2)) # 判断两个集合是否有交集,有则返回true;没有则返回false
# 集合的差集(补集)
print(set1.difference(set2)) #set1里有,set2里没有
print(set1-set2)
print(set2.difference(set1)) #set2里有,set1里没有
print(set2-set1)
# 集合的对称差集
print(set1.symmetric_difference(set2))#我有你没有的 加上 你有我没有的
print(set1^set2)
# 集合的子集
set3=set([4,5])
print(set3.issubset(set1)) #判断set3是否为set1的子集
print(set1.issuperset(set3)) #判断set1是否包含set3
集合遍历
# 集合遍历
# 注意:set没有索引!
for index,i in enumerate(set7): //遍历
print(index,i)
集合生成式
语法: { 表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] }
集合推导式和字典推导式的格式完全相同,那么给定一个类似的推导式,如何判断是哪种推导式呢?最简单直接的方式,就是根据表达式进行判断, 如果表达式以键值对(key:value)的形式,则证明此推导式是字典推导式 ;反之,则是集合推导式。
# 集合元素的唯一性
tupledemo = (1,1,2,3,4,5,6,6)
setnew = {x**2 for x in tupledemo if x%2==0}
print(setnew)
# 输出:{16, 4, 36}
# 集合元素的无序性
dictdemo = {'1':1,'2':2,'3':3}
setnew = {x for x in dictdemo.keys()}
print(setnew)
# 输出:{'2', '1', '3'}