鱼C论坛

 找回密码
 立即注册
查看: 6032|回复: 15

[知识点备忘] 第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 | 显示全部楼层
  1. >>> type({})
  2. <class 'dict'>
  3. >>> type({"one"})
  4. <class 'set'>
  5. >>> type({"one":1})
  6. <class 'dict'>
  7. >>> ['集合中所有元素都应该是独一无二的,并且也是无序的']
  8. ['集合中所有元素都应该是独一无二的,并且也是无序的']
  9. >>> {'FishC','Python'}
  10. {'FishC', 'Python'}
  11. >>> {s for s in "FishC"}
  12. {'C', 's', 'h', 'i', 'F'}
  13. >>> set("FishC")
  14. {'C', 's', 'h', 'i', 'F'}
  15. >>> ['由于集合是无序的,所以我们不能使用下标索引的方式进行访问']
  16. ['由于集合是无序的,所以我们不能使用下标索引的方式进行访问']
  17. >>> s = set('FishC')
  18. >>> S[0]
  19. Traceback (most recent call last):
  20.   File "<pyshell#9>", line 1, in <module>
  21.     S[0]
  22. NameError: name 'S' is not defined
  23. >>> 'C' in s
  24. True
  25. >>> 'c' not in s
  26. True
  27. >>> for each in s:
  28.         print(each)

  29.        
  30. C
  31. s
  32. h
  33. i
  34. F
  35. >>> set([1,1,2,3,5])
  36. {1, 2, 3, 5}
  37. >>> ['如上所示,因为集合内所有元素是唯一的,所以可以进行去重的效果']
  38. ['如上所示,因为集合内所有元素是唯一的,所以可以进行去重的效果']
  39. >>> s = [1,1,2,3,5]
  40. >>> len(s) == len(set(s))
  41. False
  42. >>> ['上述判断既可以用来判断序列中是否有重复的元素,如果二者相等,则没有重复的元素,否则就有重复的元素']
  43. ['上述判断既可以用来判断序列中是否有重复的元素,如果二者相等,则没有重复的元素,否则就有重复的元素']
  44. >>> t = s.copy()
  45. >>> t
  46. [1, 1, 2, 3, 5]
  47. >>> s = set('FishC')
  48. >>> S
  49. Traceback (most recent call last):
  50.   File "<pyshell#23>", line 1, in <module>
  51.     S
  52. NameError: name 'S' is not defined
  53. >>> s
  54. {'C', 's', 'h', 'i', 'F'}
  55. >>> s.isdisjoint(set('Python'))
  56. False
  57. >>> s.isdisjoint(set('Java'))
  58. True
  59. >>> ['a.isdisjoint(b) 即是用来判断 a 和 b 两个集合是否有交集' ]
  60. ['a.isdisjoint(b) 即是用来判断 a 和 b 两个集合是否有交集']
  61. >>> s.isdisjoint('Java')
  62. True
  63. >>> s.isdisjoint('Python')
  64. False
  65. >>> ['如果要检测某一个集合是否是另一个集合的子集,可以使用 issubset() 方法']
  66. ['如果要检测某一个集合是否是另一个集合的子集,可以使用 issubset() 方法']
  67. >>> s.issubset('FishC.com.cn')
  68. True
  69. >>> ['如果要检测某一个集合是否是另一个集合的超集,可以使用 issuperset() 方法']
  70. ['如果要检测某一个集合是否是另一个集合的超集,可以使用 issuperset() 方法']
  71. >>> s.issupperset('Fish')
  72. Traceback (most recent call last):
  73.   File "<pyshell#33>", line 1, in <module>
  74.     s.issupperset('Fish')
  75. AttributeError: 'set' object has no attribute 'issupperset'
  76. >>> s.issuperset('Fish')
  77. True
  78. >>> ['并集--将集合与其他集合的元素合并在一起']
  79. ['并集--将集合与其他集合的元素合并在一起']
  80. >>> s.union({1,2,3})
  81. {'F', 1, 2, 'C', 's', 'h', 'i', 3}
  82. >>> ['交集就是找到多个集合之间共同的那些元素,使用 intrsection() 方法']
  83. ['交集就是找到多个集合之间共同的那些元素,使用 intrsection() 方法']
  84. >>> s.intersection('Fish')
  85. {'F', 's', 'h', 'i'}
  86. >>> ['差集--对于两个集合A、B,由所有属于集合A且不属于集合B的元素所组成的集合,叫做集合A与集合B的差集']
  87. ['差集--对于两个集合A、B,由所有属于集合A且不属于集合B的元素所组成的集合,叫做集合A与集合B的差集']
  88. >>> s.difference('Fish')
  89. {'C'}
  90. >>> s.union({1,2,3},'Python')
  91. {1, 2, 3, 'C', 'h', 'i', 'P', 't', 's', 'y', 'n', 'F', 'o'}
  92. >>> s.intersection('Php','Python')
  93. {'h'}
  94. >>> s.difference('Php','Python')
  95. {'F', 'C', 's', 'i'}
  96. >>> ['上述方法都是可以同时有多个参数的']
  97. ['上述方法都是可以同时有多个参数的']
  98. >>> ['对称差集--对于两个集合A、B,先排除集合A与集合B的所有共同元素,由剩余的元素组成的集合,叫做集合A与集合B的对称差集']
  99. ['对称差集--对于两个集合A、B,先排除集合A与集合B的所有共同元素,由剩余的元素组成的集合,叫做集合A与集合B的对称差集']
  100. >>> s.symmetric_difference('Python')
  101. {'t', 'C', 's', 'i', 'y', 'n', 'F', 'P', 'o'}
  102. >>> s <= set('FishC')
  103. True
  104. >>> s < set('FishC')
  105. False
  106. >>> s < set('FishC.com.cn')
  107. True
  108. >>> s > set('FishC')
  109. False
  110. >>> s >= set('FishC')
  111. True
  112. >>> s | {1,2,3} | set('Python')
  113. {'t', 1, 2, 3, 'C', 's', 'h', 'i', 'y', 'n', 'F', 'P', 'o'}
  114. >>> s & set('Php') & set('Python')
  115. {'h'}
  116. >>> s - set('Php') - set('Python')
  117. {'F', 's', 'C', 'i'}
  118. >>> s ^ set('Python')
  119. {'C', 'i', 'P', 't', 's', 'n', 'y', 'F', 'o'}
  120. >>> ['使用运算符,符号两边都必须是集合类型']
  121. ['使用运算符,符号两边都必须是集合类型']
  122. >>> s <= 'FishC'
  123. Traceback (most recent call last):
  124.   File "<pyshell#57>", line 1, in <module>
  125.     s <= 'FishC'
  126. TypeError: '<=' not supported between instances of 'set' and 'str'
  127. >>> ['运算符号  <  <=  是表示是否为子集,  >  >= 是表示是否为超集,   | 表示并集, & 表示交集, - 表示差集(切记差集是 由所有属于前一个集合且不属于后一个集合的元素构成的集合),^ 表示对称差集  ']
  128. ['运算符号  <  <=  是表示是否为子集,  >  >= 是表示是否为超集,   | 表示并集, & 表示交集, - 表示差集(切记差集是 由所有属于前一个集合且不属于后一个集合的元素构成的集合),^ 表示对称差集  ']
  129. >>>
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 13:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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