2.7 集合

1.集合的定义

v1 = {1,2,99,18}
v2 = {"武沛齐","Alex","老妖","Egon"}
v3 = {1,True,"world",(11,22,33)}
集合与字典虽然都是用{}括号,但字典内部是键值对,而集合内部直接是值。

2.常用方法

  • add 添加元素
data = {"刘嘉玲", '关之琳', "王祖贤"}
 data.add("郑裕玲")
 print(data)
 data = set()
 data.add("周杰伦")
 data.add("林俊杰")
 print(data)
  • discard 删除元素
 data = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟", "李若彤"}
 data.discard("关之琳") 
 print(data)
  • update 批量添加
 update() 方法通过添加另一个集合中的项目来更新当前集合。
 如果两个集合中都存在一个项目,则更新后的集合中将仅出现一次该项目。
 把集合 y 中的项目插入集合 x:
 x = {"apple", "banana", "cherry"}
 y = {"google", "microsoft", "apple"}
 x.update(y) 
 print(x)
  • intersection 交集
 s1 = {"刘能", "赵四", "⽪⻓⼭"}
 s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
 s3 = s1 & s2                 # 方式一:取两个集合的交集
 s4 = s1.intersection(s2)) # 方式二:取两个集合的交集
 print(s3,s4)
  • union 并集
 s1 = {"刘能", "赵四", "⽪⻓⼭"}
 s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
 s3 = s1 | s2               # 方式一:取两个集合的并集
 s4 = s1.union(s2))         # 方式二:取两个集合的并集
 print(s3,s4)
  • difference 差集
 s1 = {"刘能", "赵四", "⽪⻓⼭"}
 s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
 s3 = s1 - s2                   # 方式一:差集,s1中有且s2中没有的值
 s4 = s1.difference(s2)         # 方式二:差集,s1中有且s2中没有的值
 print(s3,s4)
 s5 = s2 - s1                   # 方式一:差集,s2中有且s1中没有的值
 s6 = s2.difference(s1)         # 方式一:差集,s2中有且s1中没有的值
 print(s5,s6)

symmetric_difference 返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素。
 x = {"apple", "banana", "cherry"}
 y = {"google", "runoob", "apple"}
 z = x.symmetric_difference(y) 
 print(z)

3.转换

其他类型如果想要转换为集合类型,可以通过set进行转换,并且如果数据有重复自动剔除。

提示:int/list/tuple/dict都可以转换为集合。

v1 = [11,22,33,11,3,99,22]
v2 = set(v1)
print(v2) # {11,22,33,3,99}
v1 = "武沛齐"
v2 = set(v1)
print(v2) # {"武","沛","齐"}
v1 = (11,22,3,11)
v2 = set(v1)
print(v2) # {11,22,3}
v1 = {"age":12, "status":True,"name":"武沛齐"}
print( set(v1.keys()) )     # 输出:{'status', 'name', 'age'}
print( set(v1.values()) )    # 输出:{'武沛齐', True, 12}
print( set(v1.items()) )    # 输出:{('age', 12), ('status', True), ('name', '武沛齐')}

4.其他

索引/切片/步长
集合中没有提供 索引/切片/步长 这些功能,因为他无需,所以无法使用索引操作。
获取集合长度
v = {"刘能", "赵四", "尼古拉斯")
data = len(v)
print(data)
for循环
 v = {"刘能", "赵四", "尼古拉斯")
 for item in v:
     print(item)
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注