1 .set也是iterable类型的数据
2 .支持in,not in,len()
3 .可变的set类型
4 .不可变的forzenset类型
5 .进行迭代的时候,集合类型以任意的顺序提供其数据项,是无序的。
6 .只有可以哈希计算的值才能添加到集合里面,可哈希计算的对象包含一个hash()特殊方法
7 .所有内置的固定数据类型都是可哈希运算的(float,forzenset,int,str,tuple)。内置的可变数据类型是不可以哈希运算的,因为他的哈希值是会随着包含数据项的变化而变化的,因此这些数据类型是不能添加到集合中的
8 .由于set中的数据项是无序的,所以没有索引概念,也不可以使用分片和按步骤分片。
9 .集合中每个数据项都是独一无二的,重复添加数据只是无意义的操作
方法
1 .s.add()
2 .s.clear()移除集合中所有的数据项
3 .s.copy()返回集合的浅拷贝
4 .s-t:返回一个新的 in s not in t
5 .s.difference_update(t)---s-=t:移除每一个in t not in s
6 .s.discard(x):移除s中的x.
7 .s.intersection(t):返回一个 in s and in t
8 .s&t:使得结合s包含自身与集合中t的交集
9 .s.isdisjoint(t):如果s没有和t一样的项,返回true
10 .s.issubset(t):如果s和t一样,或者s是t的子集,那么返回true ,s<t:判断s是不是t的真子集
11 .s.issupperset(t):和上面相反
12 .s.pop():随机删除一个值,如果是空集,返回一个错误
13 .s.remove(x):集合中删除x,如果没有,就返回一个错误
14 .s.symmetric_difference_update(t)--s^t:包含t和s中的每个数据项,但是不同时包含在这两个中的数据项
15 .s^=t:使得集合s只包含自身与集合t的对称差
16 .s|t:in s and (in t not in s)
使用场景
1 .快速进行成员关系测试:测试用户输入的命令行参数,如果输入参数是-h或者--help,就返回一个帮助信息 if len(sys.argv)==1 or sys.argv[1]in {'-h','--help'}
2 .确保处理没有重复的数据。比如爬虫的时候不会爬去重复的url
3 .删除不必要的数据项
4 .对之前的做法进行检查
集合内涵
1 .具体使用方法参考列表内涵
固定集合
1 .一旦创建就不能修改的集合
2 .s=forzenset()函数来进行创建
3 .上面的方法大部分可以使用
4 .唯一不同的是由于固定集合是不变的,所以可以满足哈希。因此集合与固定集合都可以包含固定集合