一.set集合

  set集合是python的一个基本数据类型,一般不是很常用.set中的元素是不重复的.无序的.里面的元素必须是可hash的(int, str, tuple, bool)

  注意:

      set集合中的元素必须是可hash的,但是set本身是不可hash的.set是可变的

      set中的元素是不重复的且无序的

使用上面的特性,我们可以用set来去重复

给list去重复

lst = [1,1,2,3,4,5,2,3,4]
print(list(set(lst))) # 把list转换成set 再转换回list # [1, 2, 3, 4, 5]

二.集合的增删改查

  1.增加   .add() . update()

s = {"刘嘉玲", '关之琳', "王祖贤"}
s.add("郑裕玲")
print(s) s.add("郑裕玲") # 重复的内容不会被添加到set集合中
print(s) s = {"刘嘉玲", '关之琳', "王祖贤"}
s.update("麻花藤") # 迭代更新
print(s) s.update(["张曼玉", "李若彤","李若彤"])
print(s)

  2.删除  .pop()  .remove()  .clear()

s = {"刘嘉玲", '关之琳', "王祖贤","张曼玉", "李若彤"}
item = s.pop() # 随机弹出一个.
print(s)
print(item)

s.remove("关之琳") # 直接删除元素
print(s)

s.clear() # 清空set集合.需要注意的是set集合如果是空的. 打印出来是set() 因为要和
dict区分的.
print(s) # set()
# s.remove("马虎疼") # 不存在这个元素. 删除会报错

  3.修改

# set集合中的数据没有索引. 也没有办法去定位一个元素. 所以没有办法进行直接修改.
# 我们可以采用先删除后添加的方式来完成修改操作
s = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟", "李若彤"}
# 把刘嘉玲改成赵本山
s.remove("刘嘉玲")
s.add("赵本⼭")
print(s)

  4.查询

# set是一个可迭代对象. 所以可以进行for循环
for el in s:
  print(el)

三.其他的常用操作

  set集合本身是可以发生改变的. 是不可hash的. 我们可以使用frozenset来保存数据. frozenset是不可变的. 也就是一个可哈希的数据类型

frozenset

是不可变的, 也就是一个可哈希的数据类型

s = frozenset(["a", "b", "c", "d"])
dic = {s:''} # 可以正常使用了
print(dic) #{frozenset({'c', 'd', 'b', 'a'}): '123'}

集合中的操作

s1 = {"a", "b", "c"}
s2 = {"d", "e", "a"}

1.交集 两个集合中共有的元素

print(s1&s2)  # {'a'}
print(s1.intersection(s2)) # {'a'}

2.并集

print(s1|s2)  # {'a', 'c', 'b', 'd', 'e'}
print(s1.union(s2)) # {'a', 'c', 'b', 'd', 'e'}

3.差集 得到第一个中单独存在的

print(s1 - s2)  # {'c', 'b'}
print(s1.difference(s2)) # {'c', 'b'}

4.反交集 两个集合中单独存在的数据

print(s1 ^ s2)  #{'c', 'd', 'b', 'e'}
print(s1.symmetric_difference(s2)) # {'c', 'd', 'b', 'e'}

5.子集

print(s1 < s2)  # False  判断set1是否为set2的子集
print(s1.issubset(s2)) #False

6.超集

print(s1 > s2)  # False  判断set1是否为set2的超集
print(s1.issuperset(s2)) # False

最新文章

  1. shell脚本中的几个括号总结(小括号/大括号/花括号)--from:http://www.cnblogs.com/hanyan225/archive/2011/10/06/2199652.html
  2. 自定义View的学习(一) 自绘制控件
  3. Java基本语法
  4. 今天&lt;人人都能弹吉他&gt;免费版获得了苹果的新品推荐
  5. 在WINDOWS上安装oracle database 11
  6. Linux守护进程详解(init.d和xinetd)
  7. AES对称加密算法
  8. 区间第K大
  9. css3选择器:nth-child和nth-of-type之间的差别
  10. hibernate---关联关系的 crud_cascade_fetch
  11. Spring Cloud 学习笔记(一)——入门、特征、配置
  12. Java经典编程题50道之三十一
  13. asp.net mvc session锁问题
  14. linux中一些简便的命令之cut
  15. 【做题】hdu5514 Frogs——另类容斥
  16. GROUP BY、HAVING、AS 的用法小例子
  17. ffmpeg综合应用示例(三)——安卓手机摄像头编码
  18. 计划任务cmd 清理文件
  19. 实现WIFI MAC认证与漫游
  20. 知乎:在卡内基梅隆大学 (Carnegie Mellon University) 就读是怎样一番体验?

热门文章

  1. c#,读取二维码
  2. Filter的连接过程《转》
  3. FME2010 案例分析: 动态批量转换
  4. Workgroup&amp;Domain(Realm)
  5. S 合伙人
  6. Notebook computer(Ubuntu)
  7. 输入输出参数 inout
  8. python多线程与线程
  9. linux / centos 安装SQL Server 2017 设置默认语言与排序规则Chinese_PRC_CI_AS
  10. 微信小程序进行地图导航使用地图功能