集合的定义
不支持元素的重复(自带去重功能)、并且内容无序
注意:创建一个空集合必须用 set( ) 而不是 { },因为 { } 是用来创建一个空字典( my_ set = {} 为一个空字典)
可以容纳多个数据
可以容纳不同类型的数据(混装)
数据是无序存储的(不支持下标索引)
不允许重复数据存在 可以修改(增加或删除元素等)
支持for循环
集合的常用操作
集合是无序的,所以集合不支持:下标索引访问
添加新元素 add
语法:集合.add(元素)。将指定元素,添加到集合内
结果:集合本身被修改,添加了新元素
my_set={"hello",666} my_set.add("123") print(my_set)
{'hello', 666, '123'}
移除元素 remove
语法:集合.remove(元素),将指定元素,从集合内移除
结果:集合本身被修改,移除了元素
my_set={"hello",666} my_set.remove(666) print(my_set)
{'hello'}
从集合中随机取出元素 pop
语法:集合.pop(),功能,从集合中随机取出一个元素
结果:会得到一个元素的结果。同时集合本身被修改,元素被移除
my_set={"hello",666,"123"} e=my_set.pop() print(my_set) print(e)
{'hello', 666}
123
注意:是随机取出删除,所以使用情况较少
清空集合 clear
语法:集合.clear(),功能,清空集合
结果:集合本身被清空
my_set={"hello",666,"123"} my_set.clear() print(my_set)
set()
取出2个集合的差集 difference
语法:集合1.difference(集合2),功能:取出集合1和集合2的差集(集合1有而集合2没有的)
结果:得到一个新集合,集合1和集合2不变
set1 = {1,2,3} set2 = {1,5,6} set3 = set1.difference(set2) print(set3) #结果:{2,3} print(set1) # 结果:{1,2,3}不变 print(set2) #结果:{1,5,6}不变
{2, 3}
{1, 2, 3}
{1, 5, 6}
消除2个集合的交集 difference_update
语法:集合1.difference_update(集合2)
功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素
结果:集合1被修改,集合2不变
set1 = {1,2,3} set2 = {1,5,6} set1.difference_update(set2) print(set1) # 结果:{2,3}变 print(set2) #结果:{1,5,6}不变
{2, 3}
{1, 5, 6}
2个集合合并 union
语法:集合1.union(集合2)
功能:将集合1和集合2组合成新集合
结果:得到新集合,集合1和集合2不变
set1 = {1,2,3} set2 = {1,5,6} set3=set1.union(set2) print(set1) print(set2) print(set3)
{1, 2, 3}
{1, 5, 6}
{1, 2, 3, 5, 6}
for循环遍历
集合不支持下标索引,所以也就不支持使用while循环
set1 = {1,2,3} print(set1) for i in set1: print(i)v
{1,2,3}
1
2
3
set的实用应用
可以对任意容器去重,数字去重后按从小到大排序,其余类型去重后无序
list1 = [2,1,2,3,4,4,3,2,9,9,0,0] list2=["12","12","1","3","3","1"] str="112324212333" tmp=list(set(list1))#对于数字是从小到大排序 tmp2=list(set(list2))#对于字符串是随机排序 tmp3=list(set(str))#提取字符串里的字符去重 print(tmp) print(tmp2) print(tmp3) print(type(tmp))
[0, 1, 2, 3, 4, 9]
['3', '1', '12']
['4', '2', '1', '3']
<class 'list'>