鱼C论坛

 找回密码
 立即注册
查看: 7181|回复: 16

[知识点备忘] 第039讲:集合(上)

[复制链接]
发表于 2021-11-1 05:22:32 | 显示全部楼层 |阅读模式
购买主题 已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-4 10:33:20 | 显示全部楼层
集合与字典关系“暧昧”,具有唯一性(互异性,可用于查重或去重)和无序性(随机性)。本节讲解了创建集合的三种方式,集合的基本操作以及集合的部分内置方法,涉及子集(真子集)、超集(真超集)、并集、交集、差集、对称差集(并集与交集的差集)等集合相关概念,既可用集合的内置方法来实现,亦可用简易的运算符来实现,灵活方便!需要注意的是,使用运算符操作时符号两边都必须是集合类型的数据,而使用方法操作时参数可以是任意可迭代对象。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-12-10 21:31:06 | 显示全部楼层
>>> type({})
<class 'dict'>
>>> type({"one"})
<class 'set'>
>>> type({"one":1})
<class 'dict'>
>>> ['集合中所有元素都应该是独一无二的,并且也是无序的']
['集合中所有元素都应该是独一无二的,并且也是无序的']
>>> {'FishC','Python'}
{'FishC', 'Python'}
>>> {s for s in "FishC"}
{'C', 's', 'h', 'i', 'F'}
>>> set("FishC")
{'C', 's', 'h', 'i', 'F'}
>>> ['由于集合是无序的,所以我们不能使用下标索引的方式进行访问']
['由于集合是无序的,所以我们不能使用下标索引的方式进行访问']
>>> s = set('FishC')
>>> S[0]
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    S[0]
NameError: name 'S' is not defined
>>> 'C' in s
True
>>> 'c' not in s
True
>>> for each in s:
        print(each)

        
C
s
h
i
F
>>> set([1,1,2,3,5])
{1, 2, 3, 5}
>>> ['如上所示,因为集合内所有元素是唯一的,所以可以进行去重的效果']
['如上所示,因为集合内所有元素是唯一的,所以可以进行去重的效果']
>>> s = [1,1,2,3,5]
>>> len(s) == len(set(s))
False
>>> ['上述判断既可以用来判断序列中是否有重复的元素,如果二者相等,则没有重复的元素,否则就有重复的元素']
['上述判断既可以用来判断序列中是否有重复的元素,如果二者相等,则没有重复的元素,否则就有重复的元素']
>>> t = s.copy()
>>> t
[1, 1, 2, 3, 5]
>>> s = set('FishC')
>>> S
Traceback (most recent call last):
  File "<pyshell#23>", line 1, in <module>
    S
NameError: name 'S' is not defined
>>> s
{'C', 's', 'h', 'i', 'F'}
>>> s.isdisjoint(set('Python'))
False
>>> s.isdisjoint(set('Java'))
True
>>> ['a.isdisjoint(b) 即是用来判断 a 和 b 两个集合是否有交集' ]
['a.isdisjoint(b) 即是用来判断 a 和 b 两个集合是否有交集']
>>> s.isdisjoint('Java')
True
>>> s.isdisjoint('Python')
False
>>> ['如果要检测某一个集合是否是另一个集合的子集,可以使用 issubset() 方法']
['如果要检测某一个集合是否是另一个集合的子集,可以使用 issubset() 方法']
>>> s.issubset('FishC.com.cn')
True
>>> ['如果要检测某一个集合是否是另一个集合的超集,可以使用 issuperset() 方法']
['如果要检测某一个集合是否是另一个集合的超集,可以使用 issuperset() 方法']
>>> s.issupperset('Fish')
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    s.issupperset('Fish')
AttributeError: 'set' object has no attribute 'issupperset'
>>> s.issuperset('Fish')
True
>>> ['并集--将集合与其他集合的元素合并在一起']
['并集--将集合与其他集合的元素合并在一起']
>>> s.union({1,2,3})
{'F', 1, 2, 'C', 's', 'h', 'i', 3}
>>> ['交集就是找到多个集合之间共同的那些元素,使用 intrsection() 方法']
['交集就是找到多个集合之间共同的那些元素,使用 intrsection() 方法']
>>> s.intersection('Fish')
{'F', 's', 'h', 'i'}
>>> ['差集--对于两个集合A、B,由所有属于集合A且不属于集合B的元素所组成的集合,叫做集合A与集合B的差集']
['差集--对于两个集合A、B,由所有属于集合A且不属于集合B的元素所组成的集合,叫做集合A与集合B的差集']
>>> s.difference('Fish')
{'C'}
>>> s.union({1,2,3},'Python')
{1, 2, 3, 'C', 'h', 'i', 'P', 't', 's', 'y', 'n', 'F', 'o'}
>>> s.intersection('Php','Python')
{'h'}
>>> s.difference('Php','Python')
{'F', 'C', 's', 'i'}
>>> ['上述方法都是可以同时有多个参数的']
['上述方法都是可以同时有多个参数的']
>>> ['对称差集--对于两个集合A、B,先排除集合A与集合B的所有共同元素,由剩余的元素组成的集合,叫做集合A与集合B的对称差集']
['对称差集--对于两个集合A、B,先排除集合A与集合B的所有共同元素,由剩余的元素组成的集合,叫做集合A与集合B的对称差集']
>>> s.symmetric_difference('Python')
{'t', 'C', 's', 'i', 'y', 'n', 'F', 'P', 'o'}
>>> s <= set('FishC')
True
>>> s < set('FishC')
False
>>> s < set('FishC.com.cn')
True
>>> s > set('FishC')
False
>>> s >= set('FishC')
True
>>> s | {1,2,3} | set('Python')
{'t', 1, 2, 3, 'C', 's', 'h', 'i', 'y', 'n', 'F', 'P', 'o'}
>>> s & set('Php') & set('Python')
{'h'}
>>> s - set('Php') - set('Python')
{'F', 's', 'C', 'i'}
>>> s ^ set('Python')
{'C', 'i', 'P', 't', 's', 'n', 'y', 'F', 'o'}
>>> ['使用运算符,符号两边都必须是集合类型']
['使用运算符,符号两边都必须是集合类型']
>>> s <= 'FishC'
Traceback (most recent call last):
  File "<pyshell#57>", line 1, in <module>
    s <= 'FishC'
TypeError: '<=' not supported between instances of 'set' and 'str'
>>> ['运算符号  <  <=  是表示是否为子集,  >  >= 是表示是否为超集,   | 表示并集, & 表示交集, - 表示差集(切记差集是 由所有属于前一个集合且不属于后一个集合的元素构成的集合),^ 表示对称差集  ']
['运算符号  <  <=  是表示是否为子集,  >  >= 是表示是否为超集,   | 表示并集, & 表示交集, - 表示差集(切记差集是 由所有属于前一个集合且不属于后一个集合的元素构成的集合),^ 表示对称差集  ']
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-5-16 11:57:07 | 显示全部楼层
真的想要迈进这扇门里面啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-3 13:04:42 | 显示全部楼层
学习打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-30 16:39:16 | 显示全部楼层
so difficult
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-5 22:17:18 | 显示全部楼层
Learning...The replies become less and less.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-6 21:48:25 | 显示全部楼层
思维导图运算符运算中,关于子集、真子集以及超集真超集的判断书写有误吧。应该是
< 真子集判断
<= 子集判断
> 真超集判断
>= 超集判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 21:26:36 | 显示全部楼层
前面听着很精神,后面听着听着就想睡了

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-4 21:54:52 | 显示全部楼层
看视频觉得还行,一做动手题就懵

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-29 10:45:11 | 显示全部楼层
打卡,感觉最近学的都是基础中的基础,所以比较空洞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-1 17:03:07 | 显示全部楼层
集合与字典关系较为“暧昧”,都是用的{},不同的是在写法上有有明显的区别,集合具有确定性,无序性,唯一性,本节讲解了集合的基本操作,以及集合的部分内置方法涉及子集(真子集),超集(真超集),并集,差集,对称差集等集合相关概念,即可用集合的内置方法来实现,亦可用简易的运算符来实现,需要注意的是使用运算符时符号两边的类型必须是集合类型的数据,而使用方法操作时参数可以是任意的可迭代对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-31 20:05:01 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-25 17:03:34 | 显示全部楼层
集合
        创建集合的三种方式
                使用花括号,元素之间以逗号分隔:{"FishC", "Python"}
                使用集合推导式:{s for s in "FishC"}
                使用类型构造器,也就是 set():set("FishC")
        集合的随机性
                集合无序的特征,传进去的是 'F'、'i'、's'、'h'、'C',它这里显示的却是 'i'、'C'、's'、'F'、'h',在你们的电脑上结果还可能不一样,这就是随机性
        in 和 not in 来判断某个元素是否存在于集合中
                >>> 'C' in s
True
>>> 'c' not in s
True
        唯一性
                >>> set([1, 1, 2, 3, 5])
{1, 2, 3, 5}
                        在实际开发中,我们经常需要去检测一个列表中是否存在相同的元素?

那么在没有学习过集合之前,我们很有可能需要通过迭代来统计每个元素出现的次数,从而判断是否唯一……

但是,现在,咱们只需要这么写:

                                >>> s = [1, 1, 2, 3, 5]
>>> len(s) == len(set(s))
False
>>> s = [1, 2, 3, 5]
>>> len(s) == len(set(s))
True
        集合的方法
                copy() 方法
                        >>> t = s.copy()
>>> t
{'h', 's', 'i', 'F', 'C'}
                检测两个集合之间是否毫不相干,可以使用 isdisjoint(other) 方法
                        >>> s.isdisjoint(set("Python"))
False
>>> s.isdisjoint(set("JAVA"))
True
                要检测该集合是否为另一个集合的子集,可以使用 issubset(other) 方法
                        >>> s.issubset("FishC.com.cn")
True
                检测该集合是否为另一个集合的超集,可以使用 issuperset(other) 方法
                        >>> s.issuperset("Fish")
True
                并集,union方法
                        >>> s.union({1, 2, 3})
{1, 2, 3, 'h', 's', 'i', 'F', 'C'}
                交集 intersection方法
                        >>> s.intersection("Fish")
{'h', 's', 'i', 'F'}
                差集,difference方法
                        >>> s.difference("Fish")
{'C'}
                求对称差集 symmetric_difference方法
                        >>> s.symmetric_difference("Python")
{'t', 'y', 'F', 's', 'P', 'C', 'n', 'o', 'i'}
                (<=)检测子集
                        >>> s <= set("FishC")
True
                (<)检测真子集
                        >>> s < set("FishC")
False
>>> s < set("FishC.com.cn")
True
                (>)检测真超集
                         s > set("FishC")
False
                (>=)检测超集
                        s >= set("FishC")
True
                并集使用管道符(|)
                        >>> s | {1, 2, 3} | set("Python")
{1, 2, 3, 'y', 'h', 'n', 'i', 'P', 's', 'o', 't', 'C', 'F'}
                交集使用 and 符号(&)
                        >>> s & set("Php") & set("Python")
{'h'}
                差集使用减号(-
                        >>> s - set("Php") - set("Python")
{'s', 'C', 'F', 'i'}
                对称差集使用脱字符(^)
                        >>> s ^ set("Python")
{'t', 'y', 'F', 's', 'P', 'C', 'n', 'o', 'i'}
                都是支持多个参数
        注意事项
                使用运算符的话,符号两边都必须是集合类型的数据才可以,不然会报错。
                        >>> s <= "FishC"
Traceback (most recent call last):
  File "<pyshell#46>", line 1, in <module>
    s <= "FishC"
TypeError: '<=' not supported between instances of 'set' and 'str'
>>> s | [1, 2, 3]
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    s | [1, 2, 3]
TypeError: unsupported operand type(s) for |: 'set' and 'list'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-16 20:36:08 | 显示全部楼层
打卡~~~
已经开始逐渐迷离状
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-12 12:58:11 | 显示全部楼层
给我一拳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-6-27 05:36:55 | 显示全部楼层
学无止境
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 19:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表