<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'
>>> ['运算符号<<=是表示是否为子集,>>= 是表示是否为超集, | 表示并集, & 表示交集, - 表示差集(切记差集是 由所有属于前一个集合且不属于后一个集合的元素构成的集合),^ 表示对称差集']
['运算符号<<=是表示是否为子集,>>= 是表示是否为超集, | 表示并集, & 表示交集, - 表示差集(切记差集是 由所有属于前一个集合且不属于后一个集合的元素构成的集合),^ 表示对称差集']
>>> 真的想要迈进这扇门里面啊 学习打卡{:5_103:} so difficult Learning...The replies become less and less. 思维导图运算符运算中,关于子集、真子集以及超集真超集的判断书写有误吧。应该是
< 真子集判断
<= 子集判断
> 真超集判断
>= 超集判断 前面听着很精神,后面听着听着就想睡了{:10_266:}
看视频觉得还行,一做动手题就懵
打卡,感觉最近学的都是基础中的基础,所以比较空洞 集合与字典关系较为“暧昧”,都是用的{},不同的是在写法上有有明显的区别,集合具有确定性,无序性,唯一性,本节讲解了集合的基本操作,以及集合的部分内置方法涉及子集(真子集),超集(真超集),并集,差集,对称差集等集合相关概念,即可用集合的内置方法来实现,亦可用简易的运算符来实现,需要注意的是使用运算符时符号两边的类型必须是集合类型的数据,而使用方法操作时参数可以是任意的可迭代对象 打卡 集合
创建集合的三种方式
使用花括号,元素之间以逗号分隔:{"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' 打卡~~~
已经开始逐渐迷离状{:5_99:} 给我一拳{:10_247:} 学无止境
页:
[1]