一·什么是集合
type({})
<class 'dict'> #字典
type({"one"})
<class 'set'> #集合
type({"one":1})
<class 'dict'> #字典
跟字典一样,集合最大的特性就是——唯一性
即:集合中的所有元素,都应该是独一无二的并且无序。
二·创建集合的三种方法
1.第一种方法
{"FishC","python"}
{'FishC', 'python'}
2.第二种方法:利用集合推导式
{s for s in "FishC"}
{'i', 'h', 'C', 's', 'F'}
在这里,我们可以发现集合无序这个特征
3.第三种方法:使用类型构造器,也就是set
set("FishC")
{'i', 'h', 'C', 's', 'F'}
#注意# 由于集合是无序的,所以我们不能使用下标索引的方式,来对他进行访问
s = set("FishC")
s[0]
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
s[0]
TypeError: 'set' object is not subscriptable
就比如上面这样
2.我们可以使用 in 或 not in 对他进行判断,判断某个元素是否存在于集合中。
'C' in s
True
'c' not in s
True
3.如果我们想要访问集合中的元素,我们可以使用迭代的方法,就是它的无序性
for each in s:
print(each)
i
h
C
s
F
4.集合的唯一性 利用集合可以轻松的完成去重的操作
set([1,1,2,3,5])
{1, 2, 3, 5}
在实际的开发中,我们总是要去检测,一个列表中是否存在相同的元素,在没有学习集合之前,我们很可能通过迭代来统计每个元素出现的次数,从而判断是否是唯一性,
s = ([1,1,2,3,5])
len(s) == len(set(s))
False
set(s)是一个集合,集合它会去重,如果去重之前和去重之后,它是相等的,说明他们元素的数量是相等,如果不相等,就说明一定有重复的元素。
5.那么跟字典和序列对象一样,集合对象也包含了很多内置方法,
首先,列表,元组,字符串,字典都有同样一个copy方法,集合也不例外
集合就是一个浅拷贝的一个操作,
t = s.copy()
t
[1, 1, 2, 3, 5]
6.如果我们要检测两个集合之间是否毫不相干,我们使用一个叫 “is destroyed” 方法
s = set("FishC") #创建一个新的变量,放到s里面去
s
{'s', 'F', 'C', 'h', 'i'}
s.isdisjoint(set("python")) #检测FishC是否和python毫不相干
False #说明有关
#现在换成传入JAVA
s.isdisjoint(set("JAVA"))
True #说明真的毫无相干
上面我们使用set把它变成一个集合类型,使用方法的话,我们可以直接传入一个字符串,只要是传入一个可迭代对象就可以,例如
s.isdisjoint("JAVA")
True
s.isdisjoint("python")
False
7.如果我们要检测一个集合,是否是另一个集合的子集,我们可以使用 “issubset”
s.issubset("FishC.com.cn")
True
这样就说明他是它的一个子集