Python 操作集合

集合,set,主要用于数据的关系测试和去重处理,和列表类似,可以存储数据,列表中可以存储重复的数据,但是如果转化为集合之后,数据就会进行去重,然后保留唯一值;关系测试就是求多个集合对象之间的交集、差集、并集、补集等等。用{}表示。

去重处理,定义一个列表,里面有重复的数据,将列表转化为集合,然后查看集合中的数据。

list1=[ 1,3,5,7,9,7,5,3,1]
set1=set(list1)
print(set1,type(set1))

集合,可以完成列表的去重处理,集合是乱序的,无序排列的。

集合关系测试

  • 交集:两个集合中的相同的元素。Intersection,&
  • 并集:将两个集合中的元素和在一个集合中,进行集合去重处理,union,|。
  • 差集:在集合A中存在,在集合B中不存在的元素的集合。Difference。A差B和B差A的结果是完全不一致的。A差B,实际上就是A-A交B。-。
  • 子集:判断,返回True或者False,issubset。
  • 超集:判断,返回True或者False,issupperset。
  • 反向差集:对称差集,用并集-交集,将两个集合中互相没有的元素取出来,放在一个集合中。^。

示例:

中存在,在集合2中不存在,有先后顺序之分
和只在集合2中存在的元素,组成的集合,没有先后顺序
print("-------对称交集--------")
print(set1.symmetric_difference(set2))
print((set2 | set1) - (set1 & set2))

输出结果如下:

 

集合的运算,增删改查

  • 添加:add,向集合中添加一个元素,位置随机。
  • 批量添加:update,以列表的形式,向集合中加入多个元素。实际上对象只要是一个可迭代的对象,就可以。
  • 删除:remove,删除集合中的元素,集合是去重的,所以只会删除一个。
  • 长度:len
  • 判断是否是成员:in
  • 删除:pop,随机删除,并返回该删除的值。
  • 指定性删除:discard,指定一个值,如果该值在集合中,那删除,如果不在,不删。和remove的区别是如果remove一个集合中不存在的元素就会报错,如果是discard,则不会报错。

set1 = { 1,3,5,67,8,9}
#添加元素,add单个添加,update添加一个列表
set1.add(28)
print(set1)
set1.update([2,4,6])
print(set1)
#删除,remove和discard,随机删除并返回删除结果pop
set1.remove(1)
print(set1)
set1.discard(999)
print(set1)
print(set1.pop())

 

 

 

 

最新文章

  1. dubox首次调用消费者执行两次问题
  2. 不透明度opacity进阶
  3. strcmp
  4. C++调用C函数
  5. Web Storage API : LocalStroage
  6. JAVA基础学习之命令行方式、配置环境变量、进制的基本转换、排序法、JAVA文档生成等(1)
  7. (二)java特征
  8. 编写Qt Designer自定义控件(二)——编写自定义控件界面
  9. angular应用前景
  10. Android编译输出 资源指定AAPT
  11. JPDA 利用Eclipse和Tomcat进行远程调试 --转
  12. 使用 rpython 在 windows 下生成的程序无法运行
  13. MySQL能够承受上亿万条的数据量的架构
  14. 【学习OpenCV】——2.4对图像进行平滑处理
  15. HDU 4162 Shape Number(字符串,最小表示法)
  16. Linux第七节随笔 diff /uniq /stat
  17. Struts2数据传输的背后机制:ValueStack(值栈)
  18. vue笔记-条件渲染
  19. leetcode-69.x的平方根
  20. 二叉搜索树(BST)

热门文章

  1. Linux & Windows 环境下 Redis 安装与基本配置
  2. RHEL/Centos7 安装图形化桌面(转)
  3. Svn在工作中的实践感悟
  4. Docker之常用命令(二)
  5. varnish学习以及CDN的原理
  6. LeetCode算法题-Hamming Distance(Java实现)
  7. #022 Python 实验课
  8. 二叉搜索树的最近公共祖先的golang实现
  9. ios和安卓H5交互桥接
  10. Java线程状态转换