以前学习数学的时候多少还会记得集合的一些运算:交叉并补
'交集'(intersection):'&'
'差集'(difference):'-'
'并集'(union):'|'
'补集'(symmetric_difference):
本质 上数学的这些概念集合,函数在编程中都有很强烈的体现
那么 如何用代码来实现两个集合的运算呢。
首先我们回顾集合,函数中的定义域值哉也是一个集合的概念
如何使用Python去实现集合的操作呢?
有如何两个集合
lst_a= [1,2,3,4,5]lst_b= [3,4,5,6,7]
交集:两个集合中的共同元素
思路:
遍历每个list_a中的元素item,如果这个item在集合lst_b中也存在,
说明这个元同时存在 于这两个集合中,也是就交集的元素。
编写程序.
a=[1,2,3,4,5]lst_b=[3,4,5,6,7]result=[]foritem in lst_a:ifitem in lst_b:result.append(item)print(result)
关键点用 for in 去遍历一个元素是比较简单的。
判断元素 item在集合中用 item in lst语法 去判断即可
在集合中添加元素用 append 方法
进一步思考:有没有什么简单的做法?当然是有的
lst_a= [1,2,3,4,5]lst_b= [3,4,5,6,7]lst_c= [x for x in lst_b if x in lst_a]print(lst_c)
lst_c = [x for x in lst_b if x in lst_a]
这句话怎么理解?
x for x in lst_b 对于每一个在lst_b中的无线x
if x in lst_a 如果 x也在集合lst_a中
说明元素 x 是交集
2 并集:两个集合中的共同元素
思路:
a 集合 + b集合的元素 & 元素不在a中存
print("---并集--")lst_a= [1,2,3,4,5]lst_b= [3,4,5,6,7]lst_c= lst_a + [x for x in lst_b if x not in lst_a]print(lst_c)
lst_c = lst_a + [x for x in lst_b if x not in lst_a]
3 求集合 A 与集合 B 的并集
print("---A -->b补集--")lst_a= [1,2,3,4,5]lst_b= [3,4,5,6,7]lst_c= [x for x in lst_b if x not in lst_a]print(lst_c)
这些都是们自己实现的一个逻辑过程,Python中已经帮忙我们实现这些功能
交集
'''
求集合 A 与集合 B 的交集
'''lst_a = [1,2,3,4,5]lst_b = [3,4,5,6,7]set_a = set(lst_a)set_b = set(lst_b)set_c = set_a.intersection(lst_b)print(list(set_c))
并集:
并集
'''
求集合 A 与集合 B 的并集
'''lst_a = [1,2,3,4,5]lst_b = [3,4,5,6,7]set_a = set(lst_a)set_b = set(lst_b)set_c = set_a.union(set_b)print(list(set_c))
并集
补集
'''
集合 A 关于集合 B 的补集(B - A)
'''lst_a = [1,2,3,4,5]lst_b = [3,4,5,6,7]set_a = set(lst_a)set_b = set(lst_b)set_c = set_b.difference(set_a)print(list(set_c))
是不是非常的哇塞?
那么大家想过没有这些运算有啥用?
可以思考一下。