小白学 Python(15):基础数据结构(集合)(下)
程序员文章站
2022-03-21 18:13:07
人生苦短,我选Python 前文传送门 "小白学 Python(1):开篇" "小白学 Python(2):基础数据类型(上)" "小白学 Python(3):基础数据类型(下)" "小白学 Python(4):变量基础操作" "小白学 Python(5):基础运算符(上)" "小白学 Python ......
人生苦短,我选python
前文传送门
集合内置方法
集合和列表、字典、元组等一样,都提供了很多的内置方法。
既然是集合,那我们先看下这张经典的韦恩图(venn diagram):
具体的实现代码如下:
set1 = {1, 2, 3, 4, 5, 6} set2 = {4, 5, 6, 7, 7, 9} # 求交集 set3 = set1.intersection(set2) print('交集:', set3) # 求并集 set4 = set1.union(set2) print('并集:', set4) # 做差 set5 = set1.difference(set2) print('做差:', set5)
结果如下:
交集: {4, 5, 6} 并集: {1, 2, 3, 4, 5, 6, 7, 9} 做差: {1, 2, 3}
set.add()
作用:为集合添加元素
set6 = {1, 2, 3} set6.add(4) print(set6) set6.add('python') print(set6) set6.add((1, 2)) print(set6)
结果如下:
{1, 2, 3, 4} {1, 2, 3, 4, 'python'} {(1, 2), 1, 2, 3, 4, 'python'}
set.update()
作用:给集合添加元素
set7 = {1, 2} set7.update({3, 4, 'python', (4, 5)}) print(set7)
结果如下:
{1, 2, 3, 4, 'python', (4, 5)}
好像看起来 update()
和 add()
功能是一样的,区别在于 add()
参数只能是单个元素,而 update()
中的参数是一个 set 集合。
set.pop()
作用:随机移除元素。
set7.pop() print(set7)
结果如下:
{2, 3, 4, 'python', (4, 5)}
随机删除,个人感觉功能可能有点没什么实际作用,毕竟是随机删除。。。
set.remove()
作用:移除指定元素。
相比较上面 pop()
的随机删除,在删除元素的时候更多的我们是使用的 remove()
或者下面我们将要介绍的 discard()
。
set8 = {1, 2, 3, 4} set8.remove(4) print(set8)
结果如下:
{1, 2, 3}
如果删除的元素不存在,则会直接报错。
set8.remove(9)
结果如下:
traceback (most recent call last): file "f:/project/python-learning/base-data-set/demo1.py", line 34, in <module> set8.remove(9) keyerror: 9
set.discard()
作用:删除集合中指定的元素,元素不存在则什么都不做。
set8.discard(9) print(set8)
结果如下:
{1, 2, 3}
set.clear()
作用:清除集合中的所有元素,并不会清除集合。
set9 = {1, 2, 3} set9.clear() print(set9)
结果如下:
set()
set.isdisjoint()
作用:判断两个集合是否包含相同的元素,如果没有返回 true,否则返回 false。
set10 = {1, 2, 3} set11 = {1, 2} set12 = {4, 5} print(set10.isdisjoint(set11)) print(set10.isdisjoint(set12))
结果如下:
false true
set.issubset()
作用:判断指定集合是否为该方法参数集合的子集。
print(set11.issubset(set10)) print(set12.issubset(set10))
结果如下:
true false
set.issuperset()
作用:判断该方法的参数集合是否为指定集合的子集。
print(set10.issuperset(set11)) print(set10.issuperset(set12))
结果如下:
true false
注意哦, issubset()
和 issuperset()
是不一样的哦,看起来都是判断子集,但是参数的含义是不一样的。
各位同学一定要自己动手敲代码哦~~
示例代码
本系列的所有代码小编都会放在代码管理仓库 github 和 gitee 上,方便大家取用。
下一篇: 记一次tomcat内存大涨到溢出的经历