1、定义及创建
集合是一个无序的不重复元素序列
创建集合可以使用{}或者set()函数,但创建一个空集合时只能使用set()函数,不能使用{},因为{}用于创建一个空字典,当使用set()创建集合时,value为一个元组
语法:set(value)或setA = {value01,value02,...}
setA = set((1 , 2 , 3 ,4))
setB = {'a' , 'b' , 'c' , 'd' , 'a' , 'e' , 'f'}
print("集合setA为:", setA)
print("集合setB为:", setB) # 集合去重
集合setA为: {1, 2, 3, 4}
集合setB为: {'b', 'f', 'c', 'a', 'd', 'e'}
2、集合的基本操作
setA = set((1 , 2 , 3 ,4))
a、添加元素
方法1:setA.add(x),将x添加到集合setA中,如setA中已存在元素,则不进行添加操作,
方法2:setA.update(x),将元素x添加到集合setA中,且参数x可以是列表、元组、字典、数组等,如setA中已存在元素,则不进行添加操作
注:
1、字符串作为参数添加集合元素,字符串被拆分成一个个的字符作为集合的元素
2、字典作为参数添加集合元素,仅将字典的key添加至集合中
# 2、添加集合元素
# 1、set.add(x)添加集合元素,如集合中已有元素,则不再进行添加操作
# 2、set.update(x)添加集合元素,x可是字符串、列表、元组、字典
setA = set((1 , 2 , 3 ,4))
print("集合setA添加完元素前为:" , setA)
setA.add(4) # 集合中已有元素4,因此不再继续重复添加4
setA.add(5)
print("集合setA添加完元素5后为:" , setA)
# set.update(x)使用字符串添加集合
setA.update('1678')
# 使用字符串添加集合元素,字符串被拆分成一个个的字符作为集合的元素
print("set.update(x)使用字符串1678添加集合后为:" , setA)
# set.update(x)使用列表添加集合
setA.update(['a' , 'b' , 2 ])
print("set.update(x)使用列表['a' , 'b' , 2 ]添加集合后为:" , setA)
# set.update(x)使用元组添加集合
setA.update(('c' , 'd' , 3 ))
print("set.update(x)使用元组('c' , 'd' , 3 )添加集合后为:" , setA)
# set.update(x)使用字典添加集合
setA.update({'Kobe' : '24' , 'Curry' : '30' })
print("set.update(x)使用字典{'Kobe' : '24' , 'Curry' : '30' }添加集合后为:" , setA)
集合setA添加完元素前为: {1, 2, 3, 4}
集合setA添加完元素5后为: {1, 2, 3, 4, 5}
set.update(x)使用字符串1678添加集合后为: {1, 2, 3, 4, 5, '7', '1', '8', '6'}
set.update(x)使用列表['a' , 'b' , 2 ]添加集合后为: {1, 2, 3, 4, 5, '7', '1', '8', '6', 'b', 'a'}
set.update(x)使用元组('c' , 'd' , 3 )添加集合后为: {1, 2, 3, 4, 5, '7', 'c', '1', '8', '6', 'b', 'd', 'a'}
set.update(x)使用字典{'Kobe' : '24' , 'Curry' : '30' }添加集合后为: {1, 2, 3, 4, 5, '7', 'c', '1', '8', '6', 'Kobe', 'Curry', 'b', 'd', 'a'}
b、移除元素
方法1:setA.remove(x),将元素x从集合setA中移除,如x不存在,报错
方法2:setA.discard(x), 将元素x从集合setA中移除,如x不存在,不会报错
方法3:setA.pop(),随机删除集合中的一个元素;set集合的pop()方法会对集合进行无序排列,删除无序排列集合的左边第一个元素(每次移除结果不一样)
setA = {'1' , '2' , '3' , '4' , '5'}
setA.remove('1')
print('setA.remove(x)移除集合元素:' , setA)
# setA.remove(x)移除不存在的元素会报错
# setA.remove('1')
# print('setA.remove(x)移除集合元素:' , setA)
setA.discard('2')
print('setA.discard(x)移除集合元素:' , setA)
# setA.discard(x)移除不存在的元素2不会报错
setA.discard('2')
print('setA.discard(x)移除不存在的元素2不会报错:' , setA)
# setA.pop()每次移除的集合元素值不一样
setA.pop()
print('setA.pop()移除集合元素后为:' , setA)
setA.remove(x)移除集合元素: {'3', '2', '5', '4'}
setA.discard(x)移除集合元素: {'3', '5', '4'}
setA.discard(x)移除不存在的元素2不会报错: {'3', '5', '4'}
setA.pop()移除集合元素后为: {'5', '4'}
c、计算集合元素个数
len(setA)用于计算集合中元素个数
d、清空集合
setA.clear()
e、删除集合
del setA
f、判断元素是否存在于集合中
x in setA,判断元素 x 是否在集合 setA 中,存在返回 True,不存在返回 False
# 4、计算集合中长度
setA = {'1' , '2' , '3' , '4' , '5'}
print("集合setA中元素个数为:%d" % len(setA))
# 5、清空集合
setA = {'1' , '2' , '3' , '4' , '5'}
setA.clear()
print("setA.clear()清空集合setA后为:" , setA)
# 6、删除集合
del setA
print("del删除集合setA后为:" , setA)
# 7、判断元素是否在集合中
setA = {'1' , '2' , '3' , '4' , '5'}
print("'1'是否在集合setA中:" , '1' in setA)
3、集合内置方法
setA = {1 ,2 , 3, 4 ,5 , 6 ,7 ,8}
setB = {1 ,3, 5 , 7 ,8 ,9 , 10 ,11}
内置方法 | 说明 | 例子 |
set.add(x) | add(elmnt) 方法用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作 语法: set.add(elmnt) 参数: elmnt -- 必填,要添加的元素 注:set集合是hash存储(所以是无序的),必须存储不变的对象,例如字符串、数字、元组等,不能储存字典、集合、列表 | setA.add(9)返回:{1 ,2 , 3, 4 ,5 , 6 ,7 ,8 ,9} setA.add(8)返回:{1 ,2 , 3, 4 ,5 , 6 ,7 ,8 } setA.add('abcd')返回:{1 ,2 , 3, 4 ,5 , 6 ,7 ,8 , 'abcd' }
|
set.update(x) | update(x)用于修改set集合,可以添加新的元素(可以是字符串、元祖、列表、集合和字典)到当前集合中,如果添加的元素在集合中已存在,则重复的元素不会添加至集合中 语法: set.update(set) 参数: x -- 必需,可以是字符串、元祖、列表、集合和字典 注:update()不能添加数字,update(1)报错 注: set.update( {"字符串"} ) 将字符串整体添加到集合中,有重复的会忽略 set.update( "字符串" ) 将字符串拆分成单个字符后再一个个添加到集合中,有重复的会忽略 |
|
set.clear() | clear() 方法用于移除集合中的所有元素 语法: set.clear() | setA.clear()返回:set() |
set.copy() | copy() 方法用于拷贝一个集合 语法:set.copy() 注:集合set的拷贝无浅拷贝、深拷贝的区别 |
|
set.difference(set1) | difference(set1) 方法用于返回集合的差集,即返回的集合元素包含在第一个集合set中,但不包含在第二个集合(方法的参数set1)中 语法: set.difference(set1) 参数: set1 -- 必需,用于计算差集的集合 返回值: 返回一个新的集合 |
|
set.difference_update(set1) | difference_update(set1) 方法用于删除两个集合中都存在的元素 语法: set.difference_update(set1) 参数: set1 -- 必需,用于计算差集的集合 返回值: 无返回值 |
|
set.discard(x) | discard() 方法用于移除指定的集合元素 语法: set.discard(value) 参数: value -- 必需,要移除的元素 注: discard()方法不同于 |
|
set.intersection(set1) | intersection() 方法用于返回两个或更多集合的交集,返回一个新的集合 语法: set.intersection(set1, set2 ... etc) 参数: set1 -- 必需,要查找相同元素的集合 set2 -- 可选,其他要查找相同元素的集合,可以多个,多个使用逗号 , 隔开 返回值: 返回一个新的集合 |
|
set.intersection_update(set1) | set.intersection_update(set1) 方法用于获取两个或更多集合中都重叠的元素,即计算交集。intersection() 方法是返回一个新的集合,而intersection_update()是在原有set集合的基础上返回交集,该函数无返回值 语法: set.intersection_update(set1, set2 ... etc) 参数: set1 -- 必需,要查找相同元素的集合 set2 -- 可选,其他要查找相同元素的集合,可以多个,多个使用逗号 , 隔开 |
|
set.isdisjoint(set1) | isdisjoint() 方法用于判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False(这个逻辑有些变态...) 语法: 参数: set -- 必需,要比较的集合 返回值: 返回布尔值,如果不包含返回 True,否则返回 False |
|
set.issubset(set1) | issubset() 方法用于判断集合set的所有元素是否都包含在指定集合set1中,如果是则返回 True,否则返回 False 语法: set.issubset(set1) 参数: set1 -- 必需,要比查找的集合 返回值: 返回布尔值,如果都包含返回 True,否则返回 False |
|
set.issuperset(set1) | issuperset() 方法用于判断指定集合set1的所有元素是否都包含在原始的集合set中,如果是则返回 True,否则返回 False 语法: set.issuperset(set1) 参数: set -- 必需,要比查找的集合 返回值: 返回布尔值,如果都包含返回 True,否则返回 False |
|
set.symmetric_difference(set1) | set.symmetric_difference(set1)函数用于将集合set1和set合并,去除两个集合的交集部分,返回一个新集合 语法: set.symmetric_difference(set1) 参数: set -- 必需,要比查找的集合 返回值: 返回一个新集合 |
|
set.symmetric_difference_update(set1) | set.symmetric_difference(set1)函数用于将集合set1合并到set中,去除两个集合的交集部分,结果保留在set中,无返回值 语法: set.symmetric_difference_update(set1) 参数: set -- 要合并的集合 |
|
set.pop() | pop() 方法用于随机移除一个元素 语法: set.pop() 返回值: 返回删掉的元素 注: 当集合中元素是由字典、字符转换的集合时,删除是随机删除元素的;当集合中元素是由数字、列表、元组、集合组成时,set.pop()删除是从左边开始删除元素的 |
|
set.remove(x) | set.remove(x)用于移除指定的元素,当元素不存在时,报错 语法: set.remove(x) 参数: x -- 要移除的元素
|
|
set.union(set1 , set2 , ... , etc) | set.union(set1,set2,...,etc)函数用于计算集合set和set1的并集,重复元素只保留一次 语法: set.union(set1 , set2 , ... , etc) 参数: set1 -- 必需,合并的目标集合 set2 -- 可选,其他要合并的集合,可以多个,多个使用逗号 , 隔开 返回值: 返回一个新集合(结果保留在set中,内存地址不变) |
|