Python基础08-数据类型:集合set
目录
集合的概念
集合的方法
集合可变吗?
集合的概念
先理解一些概念。
数据类型按照是否可变分为可变类型、不可变类型。按照访问方式可以分为顺序访问、映射访问。
如何区分可变类型、不可变类型?就看在内存中存储内容是否可以被修改。如果内存地址不变,内容可以修改,那么就是可变类型。如果内存地址变化,重新分配了内存,再在新分配内存里面存入修改后的内容,那么就是不可变类型。
可变的数据类型有:列表、字典。
不可变的数据类型有:数字、字符串、元组。
数据类型按照访问方式可以分为顺序访问、映射访问。
顺序访问的数据类型有:字符串、元组、列表。
映射访问的数据类型有:字典。
# 不可变的数据类型,同一个变量名,修改内容后内存地址发生变化
i = 1
print(i, id(i))
i = 2
print(i, id(i))s = "oracle"
print(s, id(s))
s = "mysql"
print(s, id(s))t = (1, 0,)
print(t, id(t))
t = (-2, 3)
print(t, id(t))# 可变的数据类型,同一个变量名,修改内容后内存地址不变
li = [11, 22]
print(li, id(li))
li.append(33)
print(li, id(li))d = {"db": "mysql", "storage": "iscsi"}
print(d, id(d))
d["db"] = "oracle"
print(d, id(d))# 1 8791481095840
# 2 8791481095872
# oracle 31318384
# mysql 31318512
# (1, 0) 31315392
# (-2, 3) 38789824
# [11, 22] 38739840
# [11, 22, 33] 38739840
# {'db': 'mysql', 'storage': 'iscsi'} 31252160
# {'db': 'oracle', 'storage': 'iscsi'} 31252160
再来说集合的概念。集合是用{}将元素括起来的数据类型。集合的元素是不同的、集合的元素是无序的、集合的元素必须是不可变的数据类型。
# 集合s只有4个元素
s = set("hello")
print(s)
# 并没有顺序
# {'o', 'l', 'h', 'e'}
集合的方法
集合的删除方法有pop、remove、discard。
s = {"mysql", 1, "oracle", 3, 4, 5, 6}
print(s)# 随机删除一个元素,
s.pop()
print(s)# 删除指定元素,如果元素不存在会报错
s.remove("mysql")
print(s)# 删除指定元素,如果元素不存在什么也不做
s.discard("db2")
print(s)
集合的交集intersection、并集union、差集difference、交叉补集symmetric_difference。定义和数学上集合的交集、并集、差集、交叉补集是一样的,也可以用四种符号来计算分别是&、|、-、^。
s1 = {"mysql", "oracle", "sqlserver"}
s2 = {"mysql", "db2", "oracle"}# 交集 {'mysql', 'oracle'}
print(s1.intersection(s2))
print(s1 & s2)# 并集 {'db2', 'mysql', 'sqlserver', 'oracle'}
print(s1.union(s2))
print(s1 | s2)# 差集
# {'sqlserver'}
print(s1.difference(s2))
print(s1 - s2)
# {'db2'}
print(s2.difference(s1))
print(s2 - s1)#交叉补集 {'sqlserver', 'db2'}
print(s1.symmetric_difference(s2))
print(s1 ^ s2)
交集、并集、差集、交叉补集再update,那么就相当于将结果集赋值给原来的集合。
s1 = {"mysql", "oracle", "sqlserver"}
s2 = {"mysql", "db2", "oracle"}# 相当于 s1 = s1.intersection(s2)
s1.intersection_update(s2)# 相当于 s1 = s1.union(s2)
s1.update(s2)# 相当于 s1 = s1.difference(s2)
s1.difference_update(s2)# 相当 s1 = s1.symmetric_difference(s2)
s1.symmetric_difference_update(s2)
判断是否有交集、是超集、是子集。
s1 = {"oracle", "sqlserver"}
s2 = {"mysql", "db2"}
s3 = {"mysql"}# 判断没有交集时为True
print(s1.isdisjoint(s2)) # True
print(s2.isdisjoint(s3)) # False# 判断是超集、子集
print(s2.issubset(s2)) # True
print(s3.issubset(s2)) # True
print(s2.issuperset(s2)) # True
print(s2.issuperset(s3)) # True
集合可变吗?
集合本身是可变类型。
但是frozenset集合是不可变类型。这个集合不能增删元素。
s = frozenset("hello")
Python基础08-数据类型:集合set相关推荐
- 『Python基础-11』集合 (set)
# 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...
- python基础之数据类型III
python基础之数据类型III 5.Dictionaries(字典) 5.1字典的认识 引子 我已经讲过的数据类型 int float str bool tuple list,我们讲的列表的数据类型 ...
- 1. Python基础之数据类型与注释
文章目录 Python基础之数据类型与注释 1.变量 2.数据类型 2.1 Number类型 Int 整型 Float 浮点型 2.2 Bool 布尔类型 2.3 String 字符串类型 2.4 L ...
- Python基础之数据类型(一)
Python基础之数据类型(一) 一.数据类型种类 二.int类型 三.float类型 1.float介绍 2.float简单示例 三.bool类型 1.布尔值为true 2.布尔值为false 四. ...
- Python基础之数据类型II
Python基础之数据类型II 3.List(列表) 引子 我们现在已经学过的基础数据类型: int float str bool,str类型可以帮我们存储少量的数据,但是str有什么缺点? str存 ...
- 【python基础】——数据类型(列表、字典、集合)
骏马金龙--python语法基础 python基础 变量与运算 符号 // % ** 意义 整除 整除取余 幂次方 数据种类 #mermaid-svg-7nSRRijcYFCYwTDr .label{ ...
- python基础教程--代码集合(下)
文章目录 38.字典dict 38.1 创建字典 38.2 字典获取元素 38.3 key字典 38.4key-value-items键值对 38.5字典的遍历 38.6 哈希函数haxi 39.可变 ...
- python基础教程--代码集合(上)
文章目录 1.转义字符与原字符 2.二进制与字符编码 3.二进制编码 4.变量定义 4.数据类型 5.浮点数类型 6.布尔类型 7.字符串类型 8.数据类型转换 9.注释功能 10.标识符和保留字 1 ...
- python基础知识总结集合
来源:微点阅读 https://www.weidianyuedu.com Python是一种面向对象的解释型计算机程序设计语言.它有着代码简洁.可读性强的特点.代码简洁是因为它把许多的复杂的操作封装 ...
- python 基础(数据类型、运算符、流程控制、推导式、函数等...更新中)
python基础 一.认识Python 1.python起源 Python 的创始人为吉多·范罗苏姆(Guido van Rossum),江湖人称"龟叔". 1991年,第一个Py ...
最新文章
- python语法基础学习-Python基础语法精心总结!看完都知道的可以往下继续学习了...
- 黄猫被汽车撞死 花猫雨夜苦守
- bzoj1202[HNOI2005]狡猾的商人
- 最短工期 (25 分)【拓扑排序模板】
- 全球 MEDC 2007 举行日期
- java单例模式的实现方法_JAVA单例模式的几种实现方法
- mvc4 html.dropdownlist,ASP.NET MVC4中使用Html.DropDownListFor的方法示例
- 《游戏大师Chris Crawford谈互动叙事》一1.2 两种思维方式
- latex中嵌入视频文件
- 美化java界面,java课程设计界面美化包
- 没有电脑没有手机没有网络没有爱情——纪念我的电子科技大学九里堤校区大一生活
- 低压电力线载波通信原理
- 12个月份的RGB配色
- ppt制作弹跳的小球动画效果_PPT动画制作教程:小球弹跳动画
- Mac Android Studio连接MuMu模拟器
- 电子邮件反垃圾邮件软件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- icd11中文版精神障碍pdf_简明国际神经精神障碍访谈检查(MINI)中文版.pdf
- 自动复制吱口令html,解密!手机自动复制“吱口令”“淘口令”陷阱,罪魁祸首就是它!...
- hihoCoder-1633 ACM-ICPC北京赛区2017 G.Liaoning Ship’s Voyage 线段与三角形规范相交
- Xray的安装与使用(超详细)
热门文章
- php 变更 obj,PHP: 不向后兼容的变更 - Manual
- oracle创建用户名授权,oracle创建用户及授权创建表
- 标准h5的定位_H5中的定位
- date类型_06076.1.0如何将ORC格式且使用了DATE类型的Hive表转为Parquet表
- springboot +security +mybatis+thymeleaf 实现简单的用户 角色 权限(资源) 管理
- 取消tableView多余的横线
- H5使用百度地图SDK获取用户当前位置并且标记显示在地图
- linux基础—课堂随笔010_系统启动和内核管理
- 《C++面向对象高效编程(第2版)》——3.11 类名、成员函数名、参数类型和文档...
- RHEL6.3安装vsftpd