集合set内部常用功能和使用方法-课堂笔记及课后总结

set集合,是一个无序且不重复的元素集合。set集合由于使用到的不多,所以python内部没有为set提供语法糖,所以定义set的方法不像list,tuple有几种,定义set的方法只有一种:

set1 = set(),set()中的参数可以为,字符串,列表,元组,字典或是另外一个集合。但是需要注意的是,使用字典作为参数时,set会取dict.keys()来作为参数

使用字符串作为参数:

str_set = set('parr')
str_set
{'p', 'r', 'a'}
View Code

使用列表作为参数:

list_set = set(['parr','age','sex'])
list_set
{'sex', 'parr', 'age'}
View Code

使用元组作为参数:

tuple_set = set(('parr','age','sex'))
tuple_set
{'sex', 'parr', 'age'}
View Code

使用字典作为参数:

dic_set = set({'name':'parr','age':24,'sex':'man'})
dic_set
{'name', 'sex', 'age'}
View Code

使用另一个集合作为参数:

set1 = set('parr')
set2 = set(set1)
set2
{'p', 'r', 'a'}
View Code

集合类常用功能和方法:

1、add:添加元素到集合中,重复的元素不添加到集合中

add(self*args, **kwargs)

set_a = set('parr')
set_a.add('b')
print(set_a)

#屏幕打印:{'p', 'r', 'a', 'b'}
View Code

2、clear:清除集合中的所有元素

clear(self*args, **kwargs)

set_a = set('parr')
set_a.clear()
print(set_a)

#屏幕打印:set(),表示集合已被清空
View Code

3、copy:浅拷贝(浅拷贝表示在内存中只开辟集合第一层的内存位置,其他的元素还是使用内存地址指向来做)

copy(self*args, **kwargs)

set_a = set('parr')
set_b = set_a.copy()
print(set_b)

#屏幕打印:{'p', 'a', 'r'}
View Code

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'}
View Code

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'}
View Code

6、discard:从集合中移除指定的元素,不存在的元素不会报错

discard(self*args, **kwargs)

set_a = set('parr')
set_b = set('arr')
set_a.discard('a')
print(set_a)

#屏幕打印:{'p', 'r'}
View Code

7、intersection:查找两个集合的交集并返回一个新的集合

intersection(self*args, **kwargs)

set_a = set('parr')
set_b = set('arr')
result = set_a.intersection(set_b)
print(result)

#屏幕打印:{'a', 'r'}
View Code

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'}
View Code

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
View Code

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
View Code

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
View Code

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
                                    
View Code

13、remove:删除当前集合中的指定元素,不存在报错

remove(self*args, **kwargs)

set_a = set('parr')
set_a.remove('a')
print(set_a)

#屏幕打印:{'r', 'p'}
View Code

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'}
View Code

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'}
View Code

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'}
View Code

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'}
View Code
原文地址:https://www.cnblogs.com/parr2017/p/7849826.html