Python13_集合(set)

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

相当与强制类型转换

set主要用于去重

myList = [1,1,1,12,2,2,3,4,5,6]
print(list(set(myList)))

猜你喜欢

转载自blog.csdn.net/qq_34873298/article/details/89579546