Python中的set集合
时间:2021-07-14
本文章向大家介绍Python中的set集合,主要包括Python中的set集合使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
集set
- set是可变的、无须的、不会重复的元素集合
set的元素特点
- set的元素必须可以hash
- set的元素不可索引
- set的元素可以迭代
set集的创建
set(range(9))
s1 = {1,2,'a'}
- 不可使用s1 = {}来创建,因为{}为字典的创建方式
- 使用{}方式创建参数必须为可hash对象
- 使用set()方式创建参数必须为可迭代对象,此方式会将迭代对象解析为可hash元素
In [9]: set(1,2)
TypeError: set expected at most 1 arguments, got 2
In [11]: s1 = {1,2,[2,3]}
TypeError: unhashable type: 'list'
set增加元素
- add(elem)
- 增加一个元素到set中
- 如果元素存在,什么都不做
- update(*others)
- 合并其他元素到set集中
- 参数others必须为可迭代对象,可为多个可迭代对象
- 原处修改
# add
In [16]: s1
Out[16]: {1, 2, 4}
In [17]: s1.add(5)
In [18]: s1.add(1)
In [19]: s1
Out[19]: {1, 2, 4, 5}
# update
In [20]: s2 = {'a', 2, '2', 'c'}
In [21]: s1.update(s2)
In [22]: s1
Out[22]: {1, 2, '2', 4, 5, 'a', 'c'}
set移除元素
- remove(elem)
- 从set中移除指定的元素
- 元素不存在,抛出keyError异常
- remove时会根据给定的值的hash来做移除操作,故如不存在会抛出keyError异常
- discard(elem)
- 从set中移除指定的元素
- 元素不存在,什么都不做
- pop()—>item
- 移除并返回任意的元素。
- 因set中元素为无序的,故为随机元素
- 空集使用pop返回keyError异常
- 移除并返回任意的元素。
- clear()
- 移除所有元素
In [23]: s1.remove(2)
In [24]: s1
Out[24]: {1, '2', 4, 5, 'a', 'c'}
In [25]: s1.remove(2)
KeyError: 2
In [26]: s1.discard(2)
set修改元素
- 修改
- set没有修改元素的操作
- 要么删除,要么添加
- 查询
- set为非线性结构,无法索引
- 遍历
- 可迭代所有元素
- 成员运算符
- in和not in可判断元素是否在set中
- 判断依据为hash判断,效率很高,时间复杂度为O(1)
set效率
- 线性结构查询时间复杂度时O(n),即随着数据规模增大而耗时增加
- set、dict等结构,内部使用hash值作为key,不会因数据规模增大而增加耗时
- 可hash
- 数值型int、float
- 布尔型
- 字符串string、bytes
- tuple
- None
- set的元素必须是可hash的
注:线性结构查询推荐使用索引(index)查询
set运算
-
并集
- 将两个集合中所有的元素合并在一起
- union(*others)
- 返回多个集合合并后的结果,返回一个新的对象
- |运算符重载,等同于union
- update(*others)
- 多个集合合并,原地修改
- |=,等同于update
-
交集
- 集合A和B,由所有属于A即属于B的元素组成
- intersection(*others)
- 返回多个集合的交集。返回一个新的对象
- & 等同intersection
- intersection_update(*other)
- 获取和多个集合的交集,原处修改
- &=,等同于intersection_update
-
差集
- 集合A和B,由所有属于A且不属于B的元素组成
- Difference(*others)
- 返回多个集合的差集,返回一个新的对象
- -等同于difference
- difference_update(*other)
- 获取多个集合 的差集并在原处修改
- -= 等同于difference_update
-
对称差集
- 集合A和B,由所有不属于A且不属于B的交集元素组成的集合,记作(A-B) u (B-A)
- symmetric_differece(other)
- 返回和另一个集合的差集
- ^
- 等同于symmetric_differece
- symmetric_differece_update(other)
- 获取和另一个集合的差集并就地修改
- ^=
- 等同symmetric_differece_update
集合运算
- issubset(other)
- 判断当前集合是否是另一个集合的子集
原文地址:https://www.cnblogs.com/larry-yu/p/15009863.html
- 项目中记录影响性能的缓慢数据库查询
- memory_profiler的使用
- 使用line_profiler查看api接口函数每行代码执行时间
- GAN 的 keras 实现
- 双向 LSTM
- scrapy回调函数传递参数
- python更新数据库脚本两种方法
- 使聊天机器人具有个性
- 遇到502错误,invalid request block size 解决方法
- python中json.loads,dumps,jsonify使用
- sqlalchemy和flask-sqlalchemy几种分页操作
- 一个 tflearn 情感分析小例子
- 前端js,后台python实现RSA非对称加密
- 运行mysql时,提示Table ‘performance_schema.session_variables’ doesn’t exist
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 手摸手带你理解Vue的Watch原理
- rollup环境搭建(es6转es5、压缩、本地服务器、热更新)
- Vue - 解决路由过渡动画抖动问题
- TypeScript - 泛型
- TypeScript - 类型声明、枚举、函数、接口
- Vue - 简单实现一个命令式弹窗组件
- Vue - 组件通信之$attrs、$listeners
- 多线程系列(一)多线程基础
- Python自动化运维之iptables和安全概述
- Python自动化运维之shell终极指南
- SQL 中判断条件的先后顺序,会引起索引失效么?
- Maven工程java -jar时提示xxx-SNAPSHOT.jar中没有主清单属性
- Kotlin 1.4 版本正式发布:新功能一覽
- 聊聊java中的哪些Map:(二)HashMap中的TreeNode
- 用innodb_ruby分析InnoDB的页管理