心塞,set一直是我忽略的一个数据结构

1.生成一个set:
1) set(iterable)
传入一个可以迭代的数据结构:
eg:字符串;元组;列表,字典
2) {v1,v2,.......,vn}
注意:vi必须是可以哈希的:
你问我啥叫哈希.额,你就知道就是不能变的就好了,剩下的问题问度娘
或者参考http://www.cnblogs.com/chenzhaosu/articles/3506790.html
3) 创建一个空set
set()
2.set的特点:
1)无序
2)不重复
3)可变
3.方法
add() difference_update()
clear() discard()
copy() intersection() >
difference() intersection_update()
'add',
'clear',
'copy',
'difference',
'difference_update',
'discard',
'intersection',
'intersection_update',
'isdisjoint',
'issubset',
'issuperset',
'pop',
'remove',
'symmetric_difference',
'symmetric_difference_update',
'union',
'update'

1)查:
无序啊,怎么查.遍历吧
2)增:
add()
eg:
In [3]: a
Out[3]: {'e', 'h', 'l', 'o'}

In [4]: a.add("kkkk")

In [5]: a
Out[5]: {'e', 'h', 'kkkk', 'l', 'o'}
update()
eg:
In [7]: a.update("world")

In [8]: a
Out[8]: {'d', 'e', 'h', 'kkkk', 'l', 'o', 'r', 'w'}
3)删:
pop()
eg:
In [9]: a.pop()
Out[9]: 'e'
remove()
eg:
In [13]: a
Out[13]: {'d', 'kkkk', 'l', 'o', 'r', 'w'}

In [14]: a.remove("kkkk")

In [15]: a
Out[15]: {'d', 'l', 'o', 'r', 'w'}
4应用:
两个应用场景,1)去重,2)关系测试(数学里面的集合关系)
1)去重
eg:
l = [1,2,3,4,1,2,5,6]
得到不重复的列表:
In [16]: l = [1,2,3,4,1,2,5,6]

In [17]: l_new=list(set(l))

In [18]: l_new
Out[18]: [1, 2, 3, 4, 5, 6]
2)关系测试(可以参考数学上的集合关系)
eg:
set1={1,2,3,4,5}
set2={4,5,6,7,8}

a)取并集
In [22]: set1.union(set2)
Out[22]: {1, 2, 3, 4, 5, 6, 7, 8}

In [24]: set1 |set2
Out[24]: {1, 2, 3, 4, 5, 6, 7, 8}
b)取交集
In [25]: set1.intersection(set2)
Out[25]: {4, 5}

In [26]: set1 &set2
Out[26]: {4, 5}
c)取差集
①)在set1中不在set2中
In [27]: set1.difference(set2)
Out[27]: {1, 2, 3}

In [28]: set1-set2
Out[28]: {1, 2, 3}

②)在set2中不在set1中
In [29]: set2.difference(set1)
Out[29]: {6, 7, 8}

In [30]: set2-set1
Out[30]: {6, 7, 8}
d)(set1 U set2)-(set1 n set2)
In [31]: set1.symmetric_difference(set2)
Out[31]: {1, 2, 3, 6, 7, 8}

In [32]: set1^set2
Out[32]: {1, 2, 3, 6, 7, 8}

注: ^ 为数字6上的符号
e)子集,超级
eg:
In [33]: s1={1,2,3}

In [34]: s2={1,2}

In [42]: s2.issubset(s1)
Out[42]: True
自己是本身的子集
In [45]: s1.issuperset(s2)
Out[45]: True

In [46]: s1.issuperset(s1)
Out[46]: True

In [47]: s1<s2
Out[47]: False

In [48]: s1>s2
Out[48]: True

In [49]: s1<s1
Out[49]: False

In [50]: s1>s1
Out[50]: False
注意:使用符号的表示的时候严格小于和大于
In [51]: s1>=s1
Out[51]: True

被我忽略许久的set的更多相关文章

  1. 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

    最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...

  2. 期待许久的事情终于发生-微软收购Xamarin

    刚在VS推送的新闻中看到了醒目的标题:Microsoft to acquire Xamarin and empower more developers to build apps on any dev ...

  3. 【阔别许久的博】【我要开始攻数学和几何啦】【高精度取模+同余模定理,*】POJ 2365 The Embarrassed Cryptographer

    题意:给出一大数K(4 <= K <= 10^100)与一整数L(2 <= L <= 106),K为两个素数的乘积(The cryptographic keys are cre ...

  4. 获得其他程序弹出菜单的内容(一个困扰许久的问题o(╯□╰)o)

    刚开始到现在公司的时候接到一个任务:开发一个activex控件,自动操作本地exe程序,当时遇到弹出菜单无法获取的问题,还好不影响,最近又遇到这个问题,绕不过去了,于是昨天花了一个上午百度了个遍,总算 ...

  5. 让lu哥头痛了许久的代码(洛谷:树的统计)

    错在单点修改时传的是a,应该是id[a](Line 89).谨记!!! //fushao zuishuai #include <cstdio> #include <cstring&g ...

  6. docker 网络模式研究了许久,其实我们需要的是docker run -p 80:80命令

    我们只是希望能够从外部访问到docker而已,并不需要去折腾该死的网络模式,桥接,host等等. -p: 端口映射,格式为:主机(宿主)端口:容器端口 sudo docker run -t -i  - ...

  7. 被忽略的js细节

    今天在写一个程序,出了一点小bug,找了许久许久,终于把问题给揪了出来,真相大白那一刻感觉好蛋疼--深刻体会到了语言之间的差异. <script type="text/javascri ...

  8. 修改版: 小伙,多线程(GCD)看我就够了,骗你没好处!

    多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能.具有这种能力的系 ...

  9. 【五】将博客从jekyll迁移到了hexo

    本系列有五篇:分别是  [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面  [二]jekyll 的使用 :主要是jekyll的配置  [三]Markdo ...

随机推荐

  1. windows下Keras框架搭建

    1. 安装Anaconda https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ conda info来查询安装信息 conda list可以查 ...

  2. swift使用查阅资料备份4

    Swift - RxSwift的使用详解6(观察者2: 自定义可绑定属性) http://www.hangge.com/blog/cache/detail_1946.html extension UI ...

  3. (fields.E304) Reverse accessor for 'UserProfile.groups' clashes with reverse accessor for 'User.groups'.

    创建数据库models.py,在进行数据迁移时抛出一下异常: E:\Project\GuoJia>python manage.py makemigrations SystemCheckError ...

  4. tomcat 映射虚拟路径

    编辑server.xml   在  <Host></Host>中添加 <Context path="/renbao/img/" docBase=&qu ...

  5. tensorflow的tf.train.Saver()模型保存与恢复

    将训练好的模型参数保存起来,以便以后进行验证或测试.tf里面提供模型保存的是tf.train.Saver()模块. 模型保存,先要创建一个Saver对象:如 saver=tf.train.Saver( ...

  6. 集成spring boot + mysql + docker实战

    前言 网上找过很多文章,关于通过docker构建mysql容器并将应用容器和docker容器关联起来的文章不多.本文将给出具体的范例.此处为项目的源码 前置条件 该教程要求在宿主机上配置了: dock ...

  7. Python 绘图与可视化 matplotlib 散点图、numpy模块的random()

    效果: 代码: def scatter_curve(): # plt.subplot(1,1,1) n=1024 X=np.random.normal(0,1,n) Y=np.random.norma ...

  8. 紫书 习题7-8 UVa 12107 (IDA*)

    参考了这哥们的博客 https://blog.csdn.net/hyqsblog/article/details/46980287  (1)atoi可以char数组转int, 头文件 cstdlib ...

  9. 零基础学HTML 5实战开发(第一季)

    開始学习html5了.趋势不得不学习啊,之前老毛说过落后就要挨打,如今是不学习就要被市场淘汰,被社会淘汰.喜欢挑战,喜欢冒险.来吧.csdn给我们提供了那么好的平台.用起来..零基础学HTML 5的实 ...

  10. Java採用JNI调用VC++生成的dll(Java与C++交互)

    应项目需求,须要android调用java,java再调用C++实现android一个图片匹配的功能,我们作为java组须要和C++和Android进行交互.以下是java和C++採用JNI的方式进行 ...