小甲鱼 发表于 2021-11-1 05:22:32

已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览 购买主题

小古比鱼 发表于 2021-12-4 10:33:20

集合与字典关系“暧昧”,具有唯一性(互异性,可用于查重或去重)和无序性(随机性)。本节讲解了创建集合的三种方式,集合的基本操作以及集合的部分内置方法,涉及子集(真子集)、超集(真超集)、并集、交集、差集、对称差集(并集与交集的差集)等集合相关概念,既可用集合的内置方法来实现,亦可用简易的运算符来实现,灵活方便!需要注意的是,使用运算符操作时符号两边都必须是集合类型的数据,而使用方法操作时参数可以是任意可迭代对象。

wangtuan 发表于 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
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
    S
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, 2, 3, 5}
>>> ['如上所示,因为集合内所有元素是唯一的,所以可以进行去重的效果']
['如上所示,因为集合内所有元素是唯一的,所以可以进行去重的效果']
>>> s =
>>> len(s) == len(set(s))
False
>>> ['上述判断既可以用来判断序列中是否有重复的元素,如果二者相等,则没有重复的元素,否则就有重复的元素']
['上述判断既可以用来判断序列中是否有重复的元素,如果二者相等,则没有重复的元素,否则就有重复的元素']
>>> t = s.copy()
>>> t

>>> 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'
>>> ['运算符号<<=是表示是否为子集,>>= 是表示是否为超集,   | 表示并集, & 表示交集, - 表示差集(切记差集是 由所有属于前一个集合且不属于后一个集合的元素构成的集合),^ 表示对称差集']
['运算符号<<=是表示是否为子集,>>= 是表示是否为超集,   | 表示并集, & 表示交集, - 表示差集(切记差集是 由所有属于前一个集合且不属于后一个集合的元素构成的集合),^ 表示对称差集']
>>>

码农心 发表于 2022-5-16 11:57:07

真的想要迈进这扇门里面啊

炎凉来寻 发表于 2022-9-3 13:04:42

学习打卡{:5_103:}

chenjinchao 发表于 2022-9-30 16:39:16

so difficult

migu_sm1 发表于 2022-11-5 22:17:18

Learning...The replies become less and less.

lxping 发表于 2022-11-6 21:48:25

思维导图运算符运算中,关于子集、真子集以及超集真超集的判断书写有误吧。应该是
< 真子集判断
<= 子集判断
> 真超集判断
>= 超集判断

jgz1818 发表于 2022-12-3 21:26:36

前面听着很精神,后面听着听着就想睡了{:10_266:}

FengHL 发表于 2022-12-4 21:54:52

看视频觉得还行,一做动手题就懵

andyleesh 发表于 2022-12-29 10:45:11

打卡,感觉最近学的都是基础中的基础,所以比较空洞

小蜂队 发表于 2023-1-1 17:03:07

集合与字典关系较为“暧昧”,都是用的{},不同的是在写法上有有明显的区别,集合具有确定性,无序性,唯一性,本节讲解了集合的基本操作,以及集合的部分内置方法涉及子集(真子集),超集(真超集),并集,差集,对称差集等集合相关概念,即可用集合的内置方法来实现,亦可用简易的运算符来实现,需要注意的是使用运算符时符号两边的类型必须是集合类型的数据,而使用方法操作时参数可以是任意的可迭代对象

Wynn_0303 发表于 2023-1-31 20:05:01

打卡

学爬虫的先生 发表于 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, 2, 3, 5}
                        在实际开发中,我们经常需要去检测一个列表中是否存在相同的元素?

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

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

                                >>> s =
>>> len(s) == len(set(s))
False
>>> s =
>>> 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 |
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
    s |
TypeError: unsupported operand type(s) for |: 'set' and 'list'

littlewhale 发表于 2023-3-16 20:36:08

打卡~~~
已经开始逐渐迷离状{:5_99:}

来自成都的momo 发表于 2023-4-12 12:58:11

给我一拳{:10_247:}

ahapython 发表于 2024-6-27 05:36:55

学无止境
页: [1]
查看完整版本: 第039讲:集合(上)