@python集合快速入门
集合
集合与列表的不同
集合与列表非常相似,不同处在于:
1.不可变:集合存放的是不可变对象;
2.无序:存放无序,不按照存放的顺序存储;
3.不重复:不出现重复元素;
4.用一对花括号表示,元素之间用逗号分开。
创建空集合
s = {} #创建一个空字典 print的结果是>>{} <class ‘dict’>
s = dict()#创建一个空字典 print的结果是>>{} <class ‘dict’>
s = set() #创建一个空集合 print的结果是>>set() <class ‘set’>
向集合添加元素
#s.add(10) #向集合添加元素 print的结果是>> {10}
#s.add(10,3)#不可向集合中添加2个及以上的元素 print的结果是 >> TypeError: add() takes exactly one argument (2 given)
##s2 = {‘nmme’,5,10} #创建另一个集合
#s.update(s,s2) #向集合s添加集合s2,同时去重。print(s)>>{‘nmme’, 10, 5}
#s.update(s2) #向集合s添加集合s2,同时去重。print(s)>>{‘nmme’, 10, 5}
#s.pop() #随机删除集合s中的一个元素并返回该删除元素
#s.remove(10) #从集合s中删除指定元素10,无返回值。print(s.remove(10))>>
#KeyError: 10
集合间的运算
s = {1,2,5}
s2 = {5,6,7}
s0 = s & s2 # 集合间的交集运算&取两集合的相同元素 print(s0)>>{5} s0 = s | s2 # 集合间的并集运算|取两集合中的所有元素并去重 print(s0)>>{1, 2, 5, 6, 7}
s0 = s ^ s2 # 集合间的差集运算^:取两集合重复元素之外的元素print(s0)>>{1, 2, 6, 7}
s0 = s - s2 # 集合间的差集运算s-s2表示从s中删去s2的元素 print(s0)>>{1, 2}
注:前三种运算没有顺序之别,而第三中差集运算有顺序,即s-s2不同于s2-s
两集合的比较
s = {1,2}
s1 = {1,2,3}
s2 = {3,4,5}
s3 = {1,2}
print(s < s1) #判断集合s是否是s1的真子集>>True
print(s <= s1)#判断集合s是否是s1的子集>>True
print(s < s2) #判断集合s是否是s2的真子集>>False
print(s < s3)#判断集合s是否是s3的真子集>>False
print(s <= s3)#判断集合s是否是s3的子集>>True
print(s3 >= s)#判断集合s是否是s3的超集>>True
print(s3 > s)#判断集合s是否是s3的真超集>>False
注意:集合没有下列运算
s1 = {1,2}
s2 = {3,4,5}
s = s1+s2 #print(s)>>TypeError: unsupported
operand type(s) for +: ‘set’ and ‘set’
s = {[1,2],3,4} #集合不可存储列表,但可以存储元组和字符串,
print(s)>>TypeError: unhashable type: ‘list’
s = {{1:3},1,2,3} #集合不可存储字典 print(s)>>
TypeError: unhashable type: ‘dict’