Python全栈day14(集合)
一,集合
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(集合)的更多相关文章
- Python全栈day14(字符串格式化)
一,%字符串格式化 1,使用%s 后面一一对应输入对应的字符串,%s可以接受任何参数 print ("I am %s hobby is zhangsan"%'lishi') pri ...
- 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】
点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...
- Python全栈开发【模块】
Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...
- Python全栈开发【基础四】
Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...
- Python全栈开发【基础三】
Python全栈开发[基础三] 本节内容: 函数(全局与局部变量) 递归 内置函数 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 def 函数名(参数): ... 函数体 . ...
- Python全栈开发【基础二】
Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...
- Python全栈考试-部分试题(精选)
Python全栈考试(一) Python全栈考试(一) 1.执行 Python 脚本的两种方式 答:1.>>python ../pyhton.py 2. >>python.py ...
- Python全栈之路目录结构
基础 1.Python全栈之路-----基础篇 2.Python全栈之路---运算符与基本的数据结构 3.Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数 4.Python全栈 ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
随机推荐
- OpenCV2马拉松第24圈——轮廓提取
计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/27979267 收入囊中 在图片中找到轮廓而且描绘 ...
- /^(0|[1-9]\d*)([.]5)?$/ 在PHP正则中是什么意思 ?
^以什么开头 ()分组 |或的意思 \d 匹配任何数字字符串 [-] |[-]\d* 或1-9之间的数+任意数字零次或多次 开头 ()分组 []原子表 [.]5匹配. ? 零次或1次 总结: 必须以0 ...
- vue-tree
vue-tree vue 编写的树形菜单,小巧实用,支持vue1.0,vue2.0 v1.0 功能: 1.支持多级树目录 2.支持高亮点击的节点 3.支持展开点击节点 4.支持点击收缩节点时收缩所有子 ...
- oracle时间操作结合to_char和to_date使用
1,按每个10分钟进行分组展示数据 例如 有这么一张表 XATXDAY_FLIGHT(航班飞航表), 有这么一个字段 STD_LOCAL(起飞时间), 要求:统计一天24小时之内每隔10分钟,这10分 ...
- Servlet请求转发RequestDispatcher接口
在Servlet中,利用RequestDispatcher对象,可以将请求转发给另外一个Servlet或JSP页面,甚至是HTML页面,来处理对请求的响应. 一,RequestDispatcher接口 ...
- [C++]VAssistX文件头添加注释功能设置
问题情况:每次手写注释太慢,而且不统一.问题原因:C++可以利用宏写注释,也可以使用VAssistX提供的方法.问题处理:1.安装VAssistX在VS2010上2.VS2010菜单->VAss ...
- 关于Safe DOG的文件上传bypass
Author:倾旋payloads@aliyun.com本文由科拉实验室成员倾旋原创文章 Part 1 分析 此文主要研究安全狗的数据包分析功能,由于很多人都认为安全狗是通过正则去匹配的,那么暂且那么 ...
- sama5 kio接口控制
//example #include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <str ...
- linux 驱动cc1101
cc110x.h /* * File: cc110x.h * Author: elinux * * Created on 2015年4月7日, 上午10:32 */ #ifndef CC110X ...
- UCOS2系统内核讲述_总体描述
Ⅰ.写在前面 学习本文之前可以参考我前面基于STM32硬件平台移植UCOS2的几篇文章,我将其汇总在一起: UCOS2_STM32F1移植详细过程(汇总文章) 要想学习,或使用系统配套的资源(如:信号 ...