一,集合

  1,集合由不同元素组成

  2,无序

  3,集合中元素必须是不可变类型

二,定义集合

  1,s = {1,2,3,4,5}

  2,s = set(hello)以迭代的方式生成集合

s = set("hello")
print(s) {'o', 'e', 'h', 'l'}

  

三,集合的方法

  1,add添加,如果添加有重复不会报错但是也不会添加

s = {1,2,3}
s.add(4)
print(s) {1, 2, 3, 4}

  

  2,clear清除

  3,copy拷贝

s = {1,2,3}
s1 = s.copy()
print(s) {1,2,3}

  

  4,pop删除,因为是无序的所以是随机删除

  5,remove指定删除,如果指定参数没有则报错不存在KeyError

s = {1,2,3}
s.remove(1)
print(s) {2,3}

  

  6,discard和remove功能一样不过是假如没有找到关键字不会报错

四,集合的运算

  1,并集

  假设有两个列表一个列表列出学习python的学生一个列出学习linux的学生请列出既学习了python的又学习了linux的学生

  通过循环的方法vim day14-2.py

python_l = ['zhangsan','lisi','wangwu']
linux_l = ['zhangsan','lisi']
python_and_linux_l = []
for p_name in python_l:
if p_name in linux_l:
python_and_linux_l.append(p_name)
print(python_and_linux_l) ['zhangsan', 'lisi']

  这种方法比较low下面用集合来处理 vim day14-3.py

python_l = ['zhangsan','lisi','wangwu']
linux_l = ['zhangsan','lisi']
#把列表转换成无序的集合
p_s = set(python_l)
l_s = set(linux_l)
print(p_s.intersection(l_s))
print(p_s&l_s)

  使用print(p_s&l_s)更加简单

  2,和集

  使用union或者符号

  

  3,差集

  直接使用-号即可,存在于键鼠不存在于被减数中的元素

  p_s - l_s

  4,交叉补集symmetric_difference 符号^ 先合集在减去并集就是交叉补集

python_l = ['zhangsan','lisi','wangwu']
linux_l = ['zhangsan','lisi','dage']
#把列表转换成无序的集合
p_s = set(python_l)
l_s = set(linux_l)
print(p_s.symmetric_difference(l_s))

  

  5,difference_update求完差集并更新原集合返回值为None 以下操作相当于p_s = p_s - l_s

python_l = ['zhangsan','lisi','wangwu']
linux_l = ['zhangsan','lisi']
#把列表转换成无序的集合
p_s = set(python_l)
l_s = set(linux_l)
v = p_s.difference_update(l_s)
print(p_s,v) {'wangwu'} None

  

  6,isdisjoint 两个集合没有交集返回True有交集返回False

s1 = {1,2}
s2 = {3,4}
print(s1.isdisjoint(s2)) True

  

  7,issubset一个集合是否是另外一个集合的子集 如果是返回True如果不是返回False

s1 = {1,2}
s2 = {1,2,3,4}
print(s1.issubset(s2)) True

  

  8,issuperset判断一个集合是否是另外一个集合的父集

  9,update并集并且更新和union不同的是union不会更新

s1 = {1,2}
s2 = {1,2,3}
s1.update(s2)
print(s1) {1,2,3}

  

五,集合的补充

  

  1,frozenset定义不可变集合

s = frozenset('hello')
print(s) frozenset({'e', 'h', 'l', 'o'})

  2,列表使用集合的方法去重,但是新生成的列表顺序可能和原列表不同

names = ['zhangsan','zhangsan','lisi']
names = list(set(names))
print(names) ['lisi', 'zhangsan']

  

  

最新文章

  1. jsp模仿QQ空间说说的发表
  2. 生成秘钥文件 sn.exe(Strong Name Tool)
  3. 【原/转】opencv的级联分类器训练与分类全程记录
  4. java7-3 继承
  5. 【CocoaPods】配置CocoaPods前 - 本地安装好Ruby环境
  6. 解决GDB输出Qt内置类型的显示问题
  7. sql - 修改结构
  8. VSTO 为Office已有右键菜单添加自己的菜单项(word,Excel)
  9. hdu_5889_Barricade(最小割+最短路)
  10. 【知识整理】这可能是最好的RxJava 2.x 入门教程(五)
  11. Luogu P1649 [USACO07OCT]障碍路线Obstacle Course
  12. Parallels Desktop 12
  13. Navicat for MySQL 安装和破解
  14. CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-1虚拟机安装及环境初始化
  15. adb(Android Debug Bridge)安装使用教程
  16. TCP/IP具体解释学习笔记--TCP的超时与重传
  17. Proxy Hosted Virtual
  18. 转:iOS-CoreLocation:无论你在哪里,我都要找到你!
  19. wampserver 点击跳转localhost变0.0.0.0的解决方法!
  20. 51nod 最长单增子序列(动态规划)

热门文章

  1. Linux安装Scala步骤
  2. Java线程停止interrupt()方法
  3. yii2 ContentDecorator 和 block 挂件
  4. html-blogsdemo
  5. firewalld增加端口访问权限
  6. ajax——实现三级联动下拉列表
  7. API - 使用Default对象 - 基础篇
  8. notification 报错the method build() is undefined for the type Notificatin.Builder
  9. asp.net 后台调用confirm
  10. Goroutine并发调度模型深度解析之手撸一个协程池