set
类似dict,是一组key的集合,不存储value
本质:无序和无重复元素的集合
格式:集合名={元素1,元素2……,元素n}
创建
创建set必须要有一个list或者tuple作为输出集合
重复元素在set中会自动被过滤
s1 = set([1,2,3,4,4,5,5,5])
print(s1) #输出{1,2,3,4,5}
s2 = set((1,2,3,4,5))
s3 = set({1:"good",2:"nice"})#只将字典中的key保存为set的元素
print(s2)
print(s3) #只输出字典中的key
add(基本数据类型/元组)
个人理解:set的元素本身要是不能变的
s4 = set([1,2,3,4,5])
s4.add(6) #可以添加重复的,但是没有效果
print(s4)
s4.add([9,8,7])#报错,因为set的元素不能是列表,因为列表可变
s4.add((9,8,7)) #不会报错,但是将元组作为元素
s4.add([1:"good",2:"nice"]) #报错,因为字典的元素可变,所以不能作为set的元素
update()
插入整个list,tuple,字符串,打碎插入
s5 = set([1,2,3,4,5])
s5.update([6,7,8,9])
print(s5)
s5.update("sunck")
print(s5)
s5.update({1:"good",22:"nice"})
print(s5)
remove(elem)
删除元素,如果不存在该elem,则会报错
s6 = set([1,2,3,4,5])
s6.remove(5)
pop()
随机删除元素,如果集合中没有元素,还要pop,则会报错
格式:集合名.pop()
discard()
格式:集合名.discard(elem)
如果存在该元素,则直接删除,如果不存在,则不做任何操作
s = {1,2,3,4}
s.discard(3)
遍历
用循环
s7 = set([1,2,3,4,5])
for i in s7:
print(i)
for index,data in enumerate(s7):
print(index,data)
ps:目前为止,dict和set都可以用enumerate()方法
交集
s8 = set([1,2,3,4,5])
s9 = set([8,9])
a1 = s8 & s9
print(type(a1)) #set的交集还是set
print(a1)
并集
s2 = s8 | s9
ps:set实际用得比较少,主要是类型的转换
tuple --> set
set --> list
set --> tuple
相当与强制类型转换
差集
s1 = {1,2,3,4}
s2 = {3,4,5,6}
print(s1 - s2) #输出1,2
对称差集
s1 = {1,2,3,4}
s2 = {3,4,5,6}
print(s1 ^ s2) #输出1,2,5,6
set主要用于去重
myList = [1,1,1,12,2,2,3,4,5,6]
print(list(set(myList)))