无标题文Python100天35:数学的集合与程序的集合:交叉并补章

以前学习数学的时候多少还会记得集合的一些运算:交叉并补

'交集'(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))

是不是非常的哇塞?

那么大家想过没有这些运算有啥用?

可以思考一下。

你可能感兴趣的:(无标题文Python100天35:数学的集合与程序的集合:交叉并补章)