在Python中集合(set)与字典(dict)比较相似,都具有无序以及元素不能重复的特点
1.创建set
创建set需要一个list或者tuple或者dict作为输入集合
重复的元素在set中会被自动过滤
1 s1 = set([1,2,3,4,3,4,5]) 2 print (s1) 3 4 s2 = set((1,2,3,4,5,1,2,3)) 5 print (s2) 6 7 s3 = set({1:"good",2:"nice"}) 8 print (s3)
以上代码运行结果为:
1 >>>{1, 2, 3, 4, 5} 2 >>>{1, 2, 3, 4, 5} 3 >>>{1, 2}
我们可以看到list和tuple中的重复元素被自动过滤了,并且dict转为set时只保存了key值,并没有保存value值
2.添加
1 s4 = set([1,2,3,4,5]) 2 s4.add(6) 3 s4.add(3) #可以添加重复的,但是不会有效果 4 #s4.add([7,8,9]) set的元素不能是列表,因为列表是可变的,同理字典也不能添加至set 5 print (s4)
运行结果为:
1 >>>{1, 2, 3, 4, 5, 6}
3.插入
1 s5 = set([1,2,3,4,5]) 2 s5.update([6,7,8]) 3 s5.update((9,10)) 4 s5.update("nice") 5 print (s5)
使用update()函数我们可以插入整个的list、tuple、字符串,将其打碎插入,运行结果为:
1 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'c', 'n', 'e', 'i'}
我们可以看到插入的元素都被打碎,并且无序的插入了set中
4.删除
1 s6 = set([1,2,3,4,5]) 2 s6.remove(3) 3 print (s6)
运行结果为:
1 >>>{1, 2, 4, 5}
5.遍历
set是没有索引的,但我们同样可以用for对set进行遍历
1 s7 = set(['n', 'i', 'c', 'e']) 2 for i in s7: 3 print (i)
运行结果为:
1 >>>1 c 2 >>>2 n 3 >>>3 e 4 >>>4 i
注意for返回的结果同样是无序的
6.set的enumerate
1 for index,data in enumerate(s7): 2 print (index,data)
返回结果为:
1 >>>0 c 2 >>>1 n 3 >>>2 e 4 >>>3 i
结果为无序的
7.set的交集与并集
1 #交集 2 s8 = set([1,2,3,4]) 3 s9 = set([3,4,5,6]) 4 a1 = s8 & s9 5 print (a1) 6 print (type(a1)) 7 #并集 8 a2 = s8 | s9 9 print (a2) 10 print (type(a2))
运行结果为:
1 {3, 4} 2 <class 'set'> 3 {1, 2, 3, 4, 5, 6} 4 <class 'set'>