一,集合

  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']

  

  

Python全栈day14(集合)的更多相关文章

  1. Python全栈day14(字符串格式化)

    一,%字符串格式化 1,使用%s 后面一一对应输入对应的字符串,%s可以接受任何参数 print ("I am %s hobby is zhangsan"%'lishi') pri ...

  2. 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】

    点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...

  3. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  4. Python全栈开发【基础四】

    Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...

  5. Python全栈开发【基础三】

    Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 内置函数 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 def 函数名(参数): ... 函数体 . ...

  6. Python全栈开发【基础二】

    Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...

  7. Python全栈考试-部分试题(精选)

    Python全栈考试(一) Python全栈考试(一) 1.执行 Python 脚本的两种方式 答:1.>>python ../pyhton.py 2. >>python.py ...

  8. Python全栈之路目录结构

    基础 1.Python全栈之路-----基础篇 2.Python全栈之路---运算符与基本的数据结构 3.Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数 4.Python全栈 ...

  9. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

随机推荐

  1. atitit.软件gui按钮and面板---os区-----软链接,快捷方式

    atitit.软件gui按钮and面板---os区-----软链接,快捷方式 1. 硬链接 1 2. 二.软链接(符号链接)LN 1 3. 三.删除链接 2 4. 区别 2 5. 参考 3 1. 硬链 ...

  2. C++ virtual继承

    C++ virtual继承的还有一种名称是菱形继承.主要目的是用于解决从不同类继承来的同名数据成员在内存中有不同的拷贝.造成数据不统一的问题,以致于在进行类释放时造成内存泄漏. 将共同的基类作为虚基类 ...

  3. HotSpot模板解释器目标代码生成过程源码分析

    虽然说解释执行模式是逐字逐句翻译给目标平台运行的,但这样的过程未免太过缓慢,如果能把字节码说的话做成纸条,运行时只要把对应的纸条交给目标平台就可以了,这样,执行速度就会明显提升.JVM的Hotspot ...

  4. C/C++中printf和C++中cout的输出格式

    一. Printf 输出格式 C中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型,其中方括号[]中的项为可选项.各项的意义介绍如下:1.类型类型字符用以表示输出数据的类型, ...

  5. 网页抓取信息(php正則表達式、php操作excel)

    1.问题描写叙述 实现对固定网页上自己须要的信息抓取,以表格形式存储. 我是拿wustoj上的一个排行榜来练习的,地址:wustoj 2.思路 网页自己就简单学习了一下php,刚好用它来做点事情吧,我 ...

  6. Linux curl 模拟form表单提交信息和文件

    Linux curl 模拟form表单提交信息和文件   curl是一个命令行方式下传输数据的开源传输工具,支持多种协议:FTP.HTTP.HTTPS.IMAP.POP3.TELNET等,功能超级强大 ...

  7. 彻底明确Android中AIDL及其使用

    1.为什么要有AIDL? 不管学什么东西,最先得弄明确为什么要有这个东西.不要说存在即是合理.存在肯定合理,可是你还是没有明确. 对于AIDL有一些人的浅显概念就是,AIDL能够跨进程訪问其它应用程序 ...

  8. media wiki run on nginx

    1. 环境安装: nginx安装 nginx-1.5.7 php安装 PHP 5.4.10 (cli) (built: Jul 30 2014 16:45:08) mysql安装 Ver 14.14 ...

  9. Linux服务器的最大内存和CPU数

    从网上查了很多资料.总算把linux下的内存和cpu个数搞清楚了.个人觉得使用linux系统的朋友都应该了解下.先公布如下,如有错误,请反馈给我.谢谢!! Linux系统/服务器能够支持的最大内存和C ...

  10. apacheserver全局配置具体解释

    server标识相关指令: ServerName ServerAdmin ServerSignature ServerTokens UseCanonicalName UseCanonicalPhysi ...