目录

集合的概念

集合的方法

集合可变吗?


集合的概念

先理解一些概念。

数据类型按照是否可变分为可变类型、不可变类型。按照访问方式可以分为顺序访问、映射访问。

如何区分可变类型、不可变类型?就看在内存中存储内容是否可以被修改。如果内存地址不变,内容可以修改,那么就是可变类型。如果内存地址变化,重新分配了内存,再在新分配内存里面存入修改后的内容,那么就是不可变类型。

可变的数据类型有:列表、字典。

不可变的数据类型有:数字、字符串、元组。

数据类型按照访问方式可以分为顺序访问、映射访问。

顺序访问的数据类型有:字符串、元组、列表。

映射访问的数据类型有:字典。

# 不可变的数据类型,同一个变量名,修改内容后内存地址发生变化
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相关推荐

  1. 『Python基础-11』集合 (set)

    # 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...

  2. python基础之数据类型III

    python基础之数据类型III 5.Dictionaries(字典) 5.1字典的认识 引子 我已经讲过的数据类型 int float str bool tuple list,我们讲的列表的数据类型 ...

  3. 1. Python基础之数据类型与注释

    文章目录 Python基础之数据类型与注释 1.变量 2.数据类型 2.1 Number类型 Int 整型 Float 浮点型 2.2 Bool 布尔类型 2.3 String 字符串类型 2.4 L ...

  4. Python基础之数据类型(一)

    Python基础之数据类型(一) 一.数据类型种类 二.int类型 三.float类型 1.float介绍 2.float简单示例 三.bool类型 1.布尔值为true 2.布尔值为false 四. ...

  5. Python基础之数据类型II

    Python基础之数据类型II 3.List(列表) 引子 我们现在已经学过的基础数据类型: int float str bool,str类型可以帮我们存储少量的数据,但是str有什么缺点? str存 ...

  6. 【python基础】——数据类型(列表、字典、集合)

    骏马金龙--python语法基础 python基础 变量与运算 符号 // % ** 意义 整除 整除取余 幂次方 数据种类 #mermaid-svg-7nSRRijcYFCYwTDr .label{ ...

  7. python基础教程--代码集合(下)

    文章目录 38.字典dict 38.1 创建字典 38.2 字典获取元素 38.3 key字典 38.4key-value-items键值对 38.5字典的遍历 38.6 哈希函数haxi 39.可变 ...

  8. python基础教程--代码集合(上)

    文章目录 1.转义字符与原字符 2.二进制与字符编码 3.二进制编码 4.变量定义 4.数据类型 5.浮点数类型 6.布尔类型 7.字符串类型 8.数据类型转换 9.注释功能 10.标识符和保留字 1 ...

  9. python基础知识总结集合

    来源:微点阅读  https://www.weidianyuedu.com Python是一种面向对象的解释型计算机程序设计语言.它有着代码简洁.可读性强的特点.代码简洁是因为它把许多的复杂的操作封装 ...

  10. python 基础(数据类型、运算符、流程控制、推导式、函数等...更新中)

    python基础 一.认识Python 1.python起源 Python 的创始人为吉多·范罗苏姆(Guido van Rossum),江湖人称"龟叔". 1991年,第一个Py ...

最新文章

  1. python语法基础学习-Python基础语法精心总结!看完都知道的可以往下继续学习了...
  2. 黄猫被汽车撞死 花猫雨夜苦守
  3. bzoj1202[HNOI2005]狡猾的商人
  4. 最短工期 (25 分)【拓扑排序模板】
  5. 全球 MEDC 2007 举行日期
  6. java单例模式的实现方法_JAVA单例模式的几种实现方法
  7. mvc4 html.dropdownlist,ASP.NET MVC4中使用Html.DropDownListFor的方法示例
  8. 《游戏大师Chris Crawford谈互动叙事》一1.2 两种思维方式
  9. latex中嵌入视频文件
  10. 美化java界面,java课程设计界面美化包
  11. 没有电脑没有手机没有网络没有爱情——纪念我的电子科技大学九里堤校区大一生活
  12. 低压电力线载波通信原理
  13. 12个月份的RGB配色
  14. ppt制作弹跳的小球动画效果_PPT动画制作教程:小球弹跳动画
  15. Mac Android Studio连接MuMu模拟器
  16. 电子邮件反垃圾邮件软件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. icd11中文版精神障碍pdf_简明国际神经精神障碍访谈检查(MINI)中文版.pdf
  18. 自动复制吱口令html,解密!手机自动复制“吱口令”“淘口令”陷阱,罪魁祸首就是它!...
  19. hihoCoder-1633 ACM-ICPC北京赛区2017 G.Liaoning Ship’s Voyage 线段与三角形规范相交
  20. Xray的安装与使用(超详细)

热门文章

  1. php 变更 obj,PHP: 不向后兼容的变更 - Manual
  2. oracle创建用户名授权,oracle创建用户及授权创建表
  3. 标准h5的定位_H5中的定位
  4. date类型_06076.1.0如何将ORC格式且使用了DATE类型的Hive表转为Parquet表
  5. springboot +security +mybatis+thymeleaf 实现简单的用户 角色 权限(资源) 管理
  6. 取消tableView多余的横线
  7. H5使用百度地图SDK获取用户当前位置并且标记显示在地图
  8. linux基础—课堂随笔010_系统启动和内核管理
  9. 《C++面向对象高效编程(第2版)》——3.11 类名、成员函数名、参数类型和文档...
  10. RHEL6.3安装vsftpd