集合set内部常用功能和使用方法-课堂笔记及课后总结
set集合,是一个无序且不重复的元素集合。set集合由于使用到的不多,所以python内部没有为set提供语法糖,所以定义set的方法不像list,tuple有几种,定义set的方法只有一种:
set1 = set(),set()中的参数可以为,字符串,列表,元组,字典或是另外一个集合。但是需要注意的是,使用字典作为参数时,set会取dict.keys()来作为参数
使用字符串作为参数:
str_set = set('parr') str_set {'p', 'r', 'a'}
使用列表作为参数:
list_set = set(['parr','age','sex']) list_set {'sex', 'parr', 'age'}
使用元组作为参数:
tuple_set = set(('parr','age','sex')) tuple_set {'sex', 'parr', 'age'}
使用字典作为参数:
dic_set = set({'name':'parr','age':24,'sex':'man'}) dic_set {'name', 'sex', 'age'}
使用另一个集合作为参数:
set1 = set('parr') set2 = set(set1) set2 {'p', 'r', 'a'}
集合类常用功能和方法:
1、add:添加元素到集合中,重复的元素不添加到集合中
add(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_a.add('b') print(set_a) #屏幕打印:{'p', 'r', 'a', 'b'}
2、clear:清除集合中的所有元素
clear(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_a.clear() print(set_a) #屏幕打印:set(),表示集合已被清空
3、copy:浅拷贝(浅拷贝表示在内存中只开辟集合第一层的内存位置,其他的元素还是使用内存地址指向来做)
copy(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_b = set_a.copy() print(set_b) #屏幕打印:{'p', 'a', 'r'}
4、difference:集合的不同,A中存在的,B中不存在的
difference(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_b = set('arr') set_diff = set_a.difference(set_b) print(set_diff) #屏幕打印:{'p'}
5、difference_update:从A中删除与集合B相同的元素,更新到A中
difference_update(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_b = set('arr') set_a.difference_update(set_b) print(set_a) #屏幕打印:{'p'}
6、discard:从集合中移除指定的元素,不存在的元素不会报错
discard(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_b = set('arr') set_a.discard('a') print(set_a) #屏幕打印:{'p', 'r'}
7、intersection:查找两个集合的交集并返回一个新的集合
intersection(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_b = set('arr') result = set_a.intersection(set_b) print(result) #屏幕打印:{'a', 'r'}
8、intersection_update:取A、B两个集合的交集并更新到A中
intersection_update(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_b = set('arr') set_a.intersection_update(set_b) print(set_a) #屏幕打印:{'r', 'a'}
9、isdisjoint:判断是否没有交集,没有则返回True,有则False
isdisjoint(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_b = set('arr') result = set_a.isdisjoint(set_b) print(result) #屏幕打印:False
10、issubset:判断当前集合是否为另一个集合的子集,如果是则返回True,反之返回False
issubset(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_b = set('arr') result = set_a.issubset(set_b) print(result) result = set_b.issubset(set_a) print(result) #屏幕打印:False True
11、issuperset:判断当前集合是否为另一个集合的复集,如果是则返回True,反之返回False
issuperset(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_b = set('arr') result = set_a.issuperset(set_b) print(result) result = set_b.issuperset(set_a) print(result) #屏幕打印:True False
12、pop:删除当前集合中的元素(python3中删除从第一个元素开始),并返回这个元素,如果集合为空则报错key error
pop(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') print(set_a) result = set_a.pop() print(result) result = set_a.pop() print(result) result = set_a.pop() print(result) #屏幕打印:{'r', 'a', 'p'} r a p
13、remove:删除当前集合中的指定元素,不存在报错
remove(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_a.remove('a') print(set_a) #屏幕打印:{'r', 'p'}
14、symmetric_difference:对称差集,与difference的区别在于,difference只会找A在B中不存在的,而symmetric_difference会找A在B中不存在的,同时也会反向找B在A中不存在的
symmetric_difference(
self
,
*
args,
*
*
kwargs)
#如果set_b中不存在set_a中没有的元素则看不出与difference的差别: set_a = set('parr') set_b = set('arr') set_diff = set_a.symmetric_difference(set_b) print(set_diff) set_diff = set_a.difference(set_b) print(set_diff) #屏幕打印:{'p'} {'p'} #如果set_b中存在set_a中没有的元素则能看出与difference的差别: set_a = set('parr') set_b = set('barr') set_diff = set_a.symmetric_difference(set_b) print(set_diff) set_diff = set_a.difference(set_b) print(set_diff) #屏幕打印:对称差集:{'b', 'p'} 差集:{'p'}
15、symmetric_difference_update:求对称差集并更新到A中
symmetric_difference_update(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_b = set('barr') set_a.symmetric_difference_update(set_b) print(set_a) #屏幕打印:{'p', 'b'}
16、union:求两个集合的并集(就是将两个集合的所有元素组合在一起,组成一个新的集合)
union(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_b = set('barr') result = set_a.union(set_b) print(result) #屏幕打印:{'a', 'p', 'r', 'b'}
17、update:将要传入的元素拆分后添加到集合中,元素可以是str、list、tuple、字典或另一个集合。字典还是只会取到keys。str会被拆分后放进去
update(
self
,
*
args,
*
*
kwargs)
set_a = set('parr') set_b = set('hello') set_a.update([1,2,3]) print('参数为列表:',set_a) set_a = set('parr') set_a.update((4,5,6)) print('参数为元组:',set_a) set_a = set('parr') set_a.update({'7':'v1','8':'v2'}) print('参数为字典:',set_a) set_a = set('parr') set_a.update('hello') print('参数为字符串:',set_a) set_a = set('parr') set_a.update(set_b) print('参数为另一个集合:',set_a) #屏幕打印: 参数为列表: {1, 2, 3, 'r', 'a', 'p'} 参数为元组: {4, 5, 'r', 'a', 6, 'p'} 参数为字典: {'7', 'r', 'a', 'p', '8'} 参数为字符串: {'o', 'e', 'r', 'a', 'p', 'h', 'l'} 参数为另一个集合: {'o', 'e', 'r', 'a', 'h', 'p', 'l'}