一、基础复习

集合与字典区别

集合中所有元素都是独一无二的,并且也是无序的。
集合具有唯一性、无序性、有限性

>>> type({})           #字典
<class 'dict'>
>>> type({"one"})     #集合
<class 'set'>
>>> type({"one":1})   #字典
<class 'dict'>

二、集合的简单用法

1.集合创建的三种方法

#第一种是花括号里面传入多个元素
>>> {"FishC","Python"}
{'Python', 'FishC'}#第二种是集合推导式
>>> {s for s in "FishC"}    # 集合中元素是无序的
{'s', 'i', 'F', 'C', 'h'}#第三种是 set()方法
#这里源码是set(iterable),所以传入的"FishC"会被看作是可迭代对象进行迭代,而不是单个字符串
>>> set("FishC")
{'s', 'i', 'F', 'C', 'h'}

2.集合是无序的,不能通过下标索引访问

>>> s=set("FishC")
>>> s[0]
Traceback (most recent call last):File "<pyshell#10>", line 1, in <module>s[0]
TypeError: 'set' object is not subscriptable

3.判断某一元素是否在集合中

>>> set("FishC")
{'s', 'i', 'F', 'C', 'h'}
>>> 'C' in s
True
>>> 'c' in s   #字符不在集合中
False

4.访问集合元素
迭代方式访问

>>> set("FishC")
{'s', 'i', 'F', 'C', 'h'}
>>> for each in s:print(each)s
i
F
C
h

5.集合唯一性的几种用法
对列表重复元素进行去重,判断列表是否有重复元素

>>> set([1,1,2,3,5])     #对列表重复元素进行去重
{1, 2, 3, 5}
>>>
>>> s=[1,1,2,3,5]    #判断列表是否有重复元素
>>> len(s)==len(set(s))
False

6.集合的浅拷贝

>>> s=[1,1,2,3,5]
>>> t=s.copy()
>>> t
[1, 1, 2, 3, 5]

三、 集合的各种方法合集:子、交、并、补、差、对称差集

1.集合的浅拷贝

>>> s=[1,1,2,3,5]
>>> t=s.copy()
>>> t
[1, 1, 2, 3, 5]

2.判断两个集合是否毫不相关
s.isdisjoint(other) 如果 s 集合中没有与 other 容器存在共同的元素,那么返回 True,否则返回 False

>>> s=set("FishC")
>>> s
{'s', 'i', 'F', 'C', 'h'}
>>> s.isdisjoint(set("Python"))  #返回False说明它们相关,有公共的h
False
>>> s.isdisjoint(set("JAVA"))     #两集合无关
True
>>>
>>> s.isdisjoint("JAVA")     # 传入字符串,显然与集合无关
True
>>> s.isdisjoint("Python")   #传入字符串,显然与集合相关
False

3.子集
子集:对于两个集合 A、B,如果集合 A 中任意一个元素都是集合 B 中的元素,我们就说这两个集合有包含关系,称集合 A 为集合 B 的子集(Subset)

>>> set("FishC")
{'s', 'i', 'F', 'C', 'h'}
>>> s.issubset("FishC.com.cn")
True
>>> s.issuperset("Fish")
True

使用运算符,符号两边都必须是集合类型的数据才行,否则会报错,错误用法:

>>> set("FishC")
{'s', 'i', 'F', 'C', 'h'}
>>> s<="FishC"
Traceback (most recent call last):File "<pyshell#58>", line 1, in <module>s<="FishC"
TypeError: '<=' not supported between instances of 'set' and 'str'
>>>

运算符方法检测: 真集使用小于号 <

>>> s <=set("FishC")    #真集
True
>>> s<set("Fish")
False
>>> s<set("FishC")
False
>>> s<set("FishC.com.cn")    #真子集
True

4.并集
并集:对于两个集合 A、B,把他们所有的元素合并在一起组成的集合,叫做集合 A 与集合 B 的并集(Union)。

>>> set("FishC")
{'s', 'i', 'F', 'C', 'h'}
>>> s.union({1,2,3})
{1, 2, 3, 'C', 's', 'h', 'i', 'F'}>>> s.union({1,2,3},"python")
{'y', 1, 2, 3, 's', 'F', 'p', 'i', 't', 'n', 'C', 'o', 'h'}

运算符方法检测:并集使用管道符
这条竖线 | 称为管道符

>>> s | {1,2,3} | set("Python")
{'y', 1, 2, 3, 'P', 's', 'i', 'F', 't', 'n', 'C', 'o', 'h'}

5.交集

交集:对于两个集合 A、B,由所有属于集合 A 且属于集合 B 的元素所组成的集合,叫做集合 A 与集合 B 的交集(Intersection)。

>>> set("FishC")
{'s', 'i', 'F', 'C', 'h'}
>>> s.intersection("Fish")
{'h', 'i', 'F', 's'}>>> s.intersection("Php","Python")
{'h'}

运算符方法检测:交集使用&符号

>>> s & set("Php") & set("Python")
{'h'}

5.差集
差集:对于两个集合 A、B,由所有属于集合 A 且不属于集合 B 的元素所组成的集合,叫做集合 A 与集合 B 的差集(Difference)。

>>> set("FishC")
{'s', 'i', 'F', 'C', 'h'}
>>> s.difference("Fish")
{'C'}>>> s.difference("Php","Python")
{'C', 's', 'i', 'F'}

运算符方法检测:差集使用减号 -

>>> s - set("Php") - set("Python")
{'i', 'C', 'F', 's'}

6.对称差集
s.symmetric_difference(other) 返回一个新集合,其内容是排除掉 s 集合和 other 容器中共有的元素后,剩余的所有元素。

>>> s.symmetric_difference("Python")
{'y', 'P', 's', 'i', 't', 'F', 'n', 'C', 'o'}

运算符方法检测:对称差集使用脱字符 ^

>>> s ^ set("Python")
{'y', 'P', 's', 'F', 'i', 't', 'n', 'C', 'o'}

7.超集
使用运算符判断集合大小

>>> s>set("FishC")    #真超集
False
>>> s>=set("FishC")  #超集
True

四、 集合的其他用法

集合中元素的基本操作 删除、添加、更新等 可变集合set()和不可变集合frozenset() 集合的可哈希等等frozenset()集合的嵌套等等知识点。

课后题:
1.如果存在多个列表,需要筛出这些列表中相同的元素,可以使用什么方法?
答:将它们转换为集合,然后进行交集运算,得出的结果便是它们之间共同拥有的元素。
解析:

>>> # 方法一
>>> l1 = [1, 2, 3, 4, 5]
>>> l2 = [1, 3, 5, 7, 9]
>>> l3 = [1, 1, 2, 3, 5]
>>> set(l1).intersection(l2, l3)
{1, 3, 5}
>>> # 方法二
>>> set(l1) & set(l2) & set(l3)
{1, 3, 5}

2.请问下面代码的执行结果是?

>>> s1 = set("fishc.com.cn")
>>> s2 = set("ilovefishc.com")
>>> s1 - s2

答:{‘n’}
解析:集合之间使用减号(-)运算符,执行的是差集运算(就是找出存在于该集合,但不存在于其它集合中的元素),也可以使用 s1.difference(s2) 得到等值的结果。
3.请问下面三个图形中,A 和 B 通过什么操作会变成 C?
A.B.C.答:对称差集。
解析:相当于偶数次重叠的有,奇数次重叠的没有。

题目来自小甲鱼 集合(上)

(小甲鱼python)集合笔记合集一 集合(上)总结 集合的简单用法 集合的各种方法合集:子、交、并、补、差、对称差集、超集相关推荐

  1. 小甲鱼python入门笔记(一)(全)

    目录 一.变量和字符串 1.python转义字符 2.交换x,y变量的值 3.原始字符串,忽略转义字符 4.长字符串两种方式 5.字符串加法和乘法 二.是时候讲讲代码了 1.python比较运算符 三 ...

  2. B站小甲鱼python学习笔记

    000 愉快的开始 视频地址: https://www.bilibili.com/video/BV1xs411Q799?p=1 python跨平台 应用范围: 操作系统.WEB.3D动画.企业应用.云 ...

  3. 小甲鱼python入门笔记(二)

    目录 九.字符串 1.大小写字母换来换去 2.左中右对齐 3.实现字符串的查找功能 4.替换 5.字符串各种情况下的判断和检测 6.截取字符串 7.拆分和拼接 8.格式化字符串 9.f-字符串(f-s ...

  4. python小甲鱼练习题答案_小甲鱼Python第 013讲元组:戴上了枷锁的列表 | 课后测试题及参考答案...

    测试题: 0. 请用一句话描述什么是列表?再用一句话描述什么是元组? 列表:一个大仓库,可以随时往里面添加和删除任何东西. 元祖:封闭的列表,一旦定义,就不可改变(不能添加.删除或修改) 1. 什么情 ...

  5. 小甲鱼Python学习笔记之函数(三)

    递归 定义 递归的两个特点(重中之重!!!) 递归的应用 能够用递归实现的功能都能够用循环迭代来实现 用递归实现斐波那契数列 用其他方式实现斐波那契数列 用递归实现汉诺塔 定义 函数之间是可以相互调用 ...

  6. 小甲鱼python入门笔记(三)

    目录 十三.函数 4.作用域 (1)局部作用域 (2)全局作用域 (3)global语句 (4)嵌套函数 (5)nonlocal语句 (6)LEGB规则 5.闭包 6.装饰器 7.lambda表达式 ...

  7. 小甲鱼Python学习笔记之函数(四)

    函数注释 类型注释 Python自省 函数注释 通过help来查看函数的注释 自定义函数时编写函数注释 >>> def exchang(dollar,rate=6.32):" ...

  8. 小甲鱼Python学习笔记之魔法方法

    什么是魔法方法 构造和析构 __init__方法 __new__方法 __del__方法 工厂函数 通过对魔法方法的重写,还可以自定义对象间的算术运算 反运算方法 实现一个计时器的类 time模块的l ...

  9. (小甲鱼python)字符串系列笔记合集四 第四课、字符串IV总结 删除字符串中(左右)空格 删除指定的前缀或者后缀 字符串以参数指定的分隔符为依据进行切割,将切割后的结果返回一个三元组

    一.字符串总结四 1.删除字符串中(左右)空格或者与之匹配的字符串 "字符串".lstrip(char=None) 删除左空格 "字符串".rstrip(cha ...

  10. 小甲鱼python课后题答案_小甲鱼python视频教程下载|小甲鱼零基础学python视频教程附习题答案_ - 极光下载站...

    小甲鱼零基础学python视频教程下载,最完整的小甲鱼python语言学习视频来啦,想要学习python语言的小白们不妨点击观看视频在下学习吧! Python语言介绍 Python是一种面向对象的解释 ...

最新文章

  1. 爬虫笔记7正则表达式与re库
  2. liferay 如何添加css或者js
  3. lsattr/chattr
  4. C++ 常用拷贝和替换算法
  5. 设计模式学习之单件模式singleton
  6. Entity Framework关联实体的三种加载方法
  7. 橱柜高度与身高对照表_厨房台面高度是多少 厨房台面如何选购
  8. 通过OAuth方式与docker hub v2 API交互
  9. STM32 cubemx驱动ws2812b灯条
  10. 如何在微信里找到小程序?
  11. android adb login,adb
  12. 入门pandas—数据填充
  13. delete obsolete 会删除归档日志么?
  14. xp装html5,WindowsXP系统如何安装IIS5.1
  15. session fixation漏洞简述
  16. docker虚拟化容器技术
  17. 5.1.2全景声音箱摆位_全景声音响系统--音箱应该如何摆位(5.1.2、5.1.4篇)
  18. 数字华容道有解的条件
  19. IOS积分墙:末落贵族与新兴势力PK
  20. 张杰和机器人_「配天机器人|视点」来福谐波:90后张杰的“生意经”

热门文章

  1. wx小程序(wxml)
  2. 在form表单中添加一个隐藏的reset按钮,
  3. 泪奔,我再一次愿意相信地久天长
  4. 一些适合程序员玩的游戏
  5. Linux最最最常用命令!
  6. 对于网络连接超时问题的推测;错误码3001 3002 3003 3004等网络错误code码
  7. 790. 数的三次方根
  8. 【练习】星巴克介绍页面
  9. 有哪些分体式降噪耳机推荐?最值得入手的分体式降噪耳机
  10. Netty空闲检测之写空闲