龙空技术网

Python100天35:数学的集合与程序的集合:交叉并补

洪较瘦不着调退役it人 57

前言:

今天看官们对“python交叉排序”大约比较珍视,同学们都需要学习一些“python交叉排序”的相关内容。那么小编也在网络上汇集了一些有关“python交叉排序””的相关资讯,希望同学们能喜欢,姐妹们快快来了解一下吧!

以前学习数学的时候多少还会记得集合的一些运算:交叉并补'交集'(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 = []for item in lst_a:    if item 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中的无线xif 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))

是不是非常的哇塞?[微笑]

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

可以思考一下。

标签: #python交叉排序 #python中的并运算 #c语言实现集合的交差并运算