集合set,无序,是不允许重复内容的,也就是不允许重复元素,如果有重复,会自动忽略,可接收可迭代类型 (一般用于需要判断和处理交集时候用到)

集合与字典的区别是,集合没有键只有值,字典是有键的字典是一对键值对

所以创建空集合不能用{}大括号,用大括号创建空集合默认会变成字典,如果需要创建空集合用set()

创建集合

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建集合
4 a = set()
5 a = {11,22,33,44,55,55}
6 print(a)
7 #打印出 {33, 11, 44, 22, 55}

集合的类库功能

 add(self*args, **kwargs)

"添加元素"(要添加的元素)

clear(self*args, **kwargs)

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建一个集合
4 se = {11,22,33,44}
5 #向集合里添加元素
6 se.add(55)
7 print(se)
8 #打印出 {33, 11, 44, 22, 55}

"清空元素"()

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建一个集合
4 se = {11,22,33,44}
5 #清空集合里的元素
6 se.clear()
7 print(se)
8 #打印出 空集合

difference(self*args, **kwargs)

"查找出一个集合里存在,另外一个集合不存在的元素"(格式:查找集合.difference(被判断的集合)

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建二个集合
4 a = {11,22,33,44}
5 b = {11,55,88,44}
6 #查找出a集合里存在,b集合不存在的元素
7 c = a.difference(b)
8 print(c)
9 #打印出 {33, 22}

difference_update(self*args, **kwargs)

"从当前集合中删除和B中相同的元素"(b集合)

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建二个集合
4 a = {11,22,33,44,999}
5 b = {11,55,88,44}
6 #从a集合中删除和b集合中相同的元素
7 a.difference_update(b)
8 print(a)
9 #打印出 {33, 22, 999}

 discard(self*args, **kwargs)

"移除指定元素,不存在不报错"(要移除的元素)

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建一个集合
4 a = {11,22,33,44,999}
5 #移除指定元素,不存在不报错
6 a.discard(999)
7 print(a)
8 #打印出 {33, 11, 44, 22}

intersection(self*args, **kwargs)

"交集,查找出a集合和b集合都存在的元素"(b集合

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建二个集合
4 a = {66,22,33,44,99}
5 b = {44,55,66,77,33}
6 #交集,查找出a集合和b集合都存在的元素
7 c = a.intersection(b)
8 print(c)
9 #打印出 {33, 66, 44}

intersection_update(self*args, **kwargs)

"交集,查找出a集合和b集合都存在的元素,并重新更新到a集合"(b集合

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建二个集合
4 a = {66,22,33,44,99}
5 b = {44,55,66,77,33}
6 #交集,查找出a集合和b集合都存在的元素,并重新更新到a集合
7 a.intersection_update(b)
8 print(a)
9 #打印出 {33, 66, 44}

isdisjoint(self*args, **kwargs)

"检查a集合和b集合是否有都存在的元素"(b集合

返回布尔值:如果没有都存在的,返回True,否则返回False

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建二个集合
4 a = {66,22,33,44,99}
5 b = {44,55,66,77,33}
6 #检查a集合和b集合是否有都存在的元素,
7 c = a.isdisjoint(b)
8 print(c)
9 #打印出 False 说明有交集

 issubset(self*args, **kwargs)

"判断一个集合是否是另一个集合的子序列"(b集合)

是返回True   不是返回False

 1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建二个集合
4 a = {11,22,33,44}
5 b = {11,22}
6 #检查a集合是否是b集合的子序列,
7 c1 = a.issubset(b)
8 print(c1)
9 #检查b集合是否是a集合的子序列
10 c2 = b.issubset(a)
11 print(c2)
12 #打印出
13 #False 检查a集合是否是b集合的子序列,说明a集合不是b集合的子序列
14 #True 检查b集合是否是a集合的子序列,说明b集合是a集合的子序列

issuperset(self*args, **kwargs)

"判断一个集合是否是另一个集合的父序列"(b集合)

是返回True   不是返回False

 1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建二个集合
4 a = {11,22,33,44}
5 b = {11,22}
6 #检查a集合是否是b集合的父序列,
7 c1 = a.issuperset(b)
8 print(c1)
9 #检查b集合是否是a集合的父序列
10 c2 = b.issuperset(a)
11 print(c2)
12 #打印出
13 #True 检查a集合是否是b集合的父序列,说明a集合是b集合的父序列
14 #False 检查b集合是否是a集合的父序列,说明b集合不是a集合的父序列

pop(self*args, **kwargs)

"移除元素"()

一般默认移除第一个元素,只是集合有一套自己的元素排序规则,

 1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 a = {44,55,66,77,88}
4 #打印出集合,可以看到集合里的元素排序情况
5 print(a)
6 #移除集合里的元素,默认移除元素里的第一个排序元素
7 b = a.pop()
8 #打印出被移除的元素
9 print(b)
10 #打印出a集合被移除后剩下的所有元素
11 print(a)
12 #最后打印出
13 #{88, 66, 44, 77, 55}
14 #
15 #{66, 44, 77, 55}

remove(self*args, **kwargs)

"移除指定元素,不存在保错"(要移除的元素)

 1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 a = {44,55,66,77,88}
4 #打印出a集合
5 print(a)
6 #移除a集合里指定的元素
7 a.remove(44)
8 #打印a集合移除指定元素后,剩下的所有元素
9 print(a)
10 #最后输出
11 #{88, 66, 44, 77, 55}
12 #{88, 66, 77, 55}
复制代码

 symmetric_difference(self*args, **kwargs)

"对称差集,就是将两个集合里没有交集的元素重新组合成一个新的集合"(b集合)

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 a = {44,55,66,77,88}
4 b = {44,55,11,22,33}
5 #对称差集,就是将两个集合里没有交集的元素重新组合成一个新的集合
6 c = a.symmetric_difference(b)
7 print(c)
8 #输出
9 #{33, 66, 11, 77, 22, 88}

symmetric_difference_update(self*args, **kwargs)

"对称差集,并更新到a中,就是将两个集合里没有交集的元素重新组合更新给a集合"(b集合)

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 a = {44,55,66,77,88}
4 b = {44,55,11,22,33}
5 #对称差集,并更新到a中,就是将两个集合里没有交集的元素重新组合更新给a集合
6 a.symmetric_difference_update(b)
7 print(a)
8 #输出
9 #{33, 66, 11, 77, 22, 88}
复制代码

union(self*args, **kwargs)

"并集,将两个集合合并成一个新的集合,元素有重复的会自动忽略"(b集合)

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 a = {44,55,66,77,88}
4 b = {44,55,11,22,33}
5 #并集,将两个集合合并成一个新的集合,元素有重复的会自动忽略只保留一次
6 c = a.union(b)
7 print(c)
8 #输出
9 #{33, 66, 11, 44, 77, 22, 55, 88}

update(self*args, **kwargs)

"更新,将b集合更新到a集合,相当于合并"(b集合)

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 a = {44,55,66,77,88}
4 b = {44,55,11,22,33}
5 #更新,将b集合更新到a集合,相当于合并
6 a.update(b)
7 print(a)
8 #输出
9 #{33, 66, 11, 44, 77, 22, 55, 88}

集合set-深入学习的更多相关文章

  1. Java集合源码学习(五)几种常用集合类的比较

    这篇笔记对几个常用的集合实现,从效率,线程安全和应用场景进行综合比较. >>ArrayList.LinkedList与Vector的对比 (1)相同和不同都实现了List接口,使用类似.V ...

  2. Java集合源码学习(三)LinkedList分析

    前面学习了ArrayList的源码,数组是顺序存储结构,存储区间是连续的,占用内存严重,故空间复杂度很大.但数组的二分查找时间复杂度小,为O(1),数组的特点是寻址容易,插入和删除困难.今天学习另外的 ...

  3. Java集合源码学习(三)LinkedList

    前面学习了ArrayList的源码,数组是顺序存储结构,存储区间是连续的,占用内存严重,故空间复杂度很大.但数组的二分查找时间复杂度小,为O(1),数组的特点是寻址容易,插入和删除困难.今天学习另外的 ...

  4. Java集合源码学习(四)HashMap分析

    ArrayList.LinkedList和HashMap的源码是一起看的,横向对比吧,感觉对这三种数据结构的理解加深了很多. >>数组.链表和哈希表结构 数据结构中有数组和链表来实现对数据 ...

  5. Java集合源码学习(二)ArrayList分析

    >>关于ArrayList ArrayList直接继承AbstractList,实现了List. RandomAccess.Cloneable.Serializable接口,为什么叫&qu ...

  6. Java集合源码学习(一)集合框架概览

    >>集合框架 Java集合框架包含了大部分Java开发中用到的数据结构,主要包括List列表.Set集合.Map映射.迭代器(Iterator.Enumeration).工具类(Array ...

  7. Map集合的便利学习总结

    1.Map提供了三种便利方式 1)遍历所有key. Set<K>  keySet()  该方法会将当前Map中所有key存入一个Set集合后返回. 2)遍历所有的key-value对 Se ...

  8. Java集合源码学习(四)HashMap

    一.数组.链表和哈希表结构 数据结构中有数组和链表来实现对数据的存储,这两者有不同的应用场景,数组的特点是:寻址容易,插入和删除困难:链表的特点是:寻址困难,插入和删除容易:哈希表的实现结合了这两点, ...

  9. Java集合源码学习(二)ArrayList

    1.关于ArrayList ArrayList直接继承AbstractList,实现了List. RandomAccess.Cloneable.Serializable接口,为什么叫"Arr ...

  10. Java集合源码学习(一)Collection概览

    1.集合框架 Java集合框架包含了大部分Java开发中用到的数据结构,主要包括List列表.Set集合.Map映射.迭代器(Iterator.Enumeration).工具类(Arrays.Coll ...

随机推荐

  1. java this的用法

    this 含义:代表当前对象 用法: 用于返回对象的引用 示例代码 public class Test { public Test f() { return this;//获取当前对象的引用 } pu ...

  2. UVa 3602 - DNA Consensus String 水题 难度: 0

    题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  3. 3.BIND从服务器及缓存服务器配置

    一.域从服务器 一个域的从服务器(slave)通常是为了备份及负载均衡使用,所有这个域的信息都是由域的主服务器控制,域slave服务器启动时会从域的主服务器(master)上抓取指定域的zone配置文 ...

  4. flask项目结构(二)创建flask,同步docker

    简介: 建立flask容易,那么部署就比较麻烦了,配这个,配那个,更新………… 所以我从构建,就考虑部署的问题,使用docker部署. 程序都打包进docker,本博客有相关文章. pycharn直接 ...

  5. Centos7单主机部署 LAMP + phpmyadmin 服务

    LAMP -> centos + apache + mysql + php + phpmyadmin 一:搭建yum仓库: 安装utils: yum -y install yum-utils c ...

  6. DevExpress ASP.NET v18.2新功能详解(二)

    行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress ASP.NET Cont ...

  7. 一、TCP扫描技术

    一.TCP扫描技术 常用的端口扫描技术有很多种,如 TCP connect() 扫描 .TCP SYN 扫描.TCP FIN 扫描 等,网络上也有很多文章专门介绍,比如 :http://www.ant ...

  8. 一个灵活的AssetBundle打包工具

      尼尔:机械纪元 上周介绍了Unity项目中的资源配置,今天和大家分享一个AssetBundle打包工具.相信从事Unity开发或多或少都了解过AssetBundle,但简单的接口以及众多的细碎问题 ...

  9. 基于.NET Core 框架搭建WebApi项目

    一 什么是.NET Core? 随着2014年 Xamarin和微软发起.NET基金会,微软在2014年11月份开放.NET框架源代码.在.NET开源基金会的统一规划下诞生了.NET Core .也就 ...

  10. 1)jquery validate 远程验证remote,自定义验证 , 手机号验证 2)bootstrap validate 远程remote验证的方法.

    1)jquery  validate 远程验证remote,自定义验证 1-1: js <script src="YYFramework/Public/js/jquery-3.1.1. ...