上节课我们学习了循环套循环的理论基础并且布置了一道作业题给大家进行思考,不知道大家已经思考出来没有呢?
这节课我们来跟大家讲解一下上节课这道题的解题答案。
首先老样子,我们来回顾一下这道题的题目:
主题:集合的交集
现在有两个元素都是整数的list,每一个list都是一个集合(就是说,在集合内没有重复的值,比如没有两个2或者两个3什么的)。这两个list的交集就是一个在两个list里面都包含的整数的list。比如说,给定两个lists[1, 2, 3, 4, 5]和[2, 4, 6, 8, 10],他们的交集是[2, 4](原来的两个list和交集list不需要进行排序)。
请完成intersection()函数,输入两个lists作为参数。这个函数返回一个python list,里面的元素是在两个list里面都出现的整数。如果两个lists没有共同元素,也就是没有交集,那么这个函数会返回一个空的list。
以下是你要实现的一些例子:
函数调用命令
返回值
intersection([1,2,3,4,5], [2,4,6,8,10])
[2, 4]
intersection([12,45,91], [36,91])
[91]
intersection([2,3,4,5,6], [7,8,9,10,11])
[]
解析:这道题首先我们需要明确一个东西,那就是什么是集合的交集?集合的交集就是集合中的元素在任意一个集合中都会出现,俗话说相交相交,都出现才会相交嘛。比如第一个集合里面有元素1,另一个集合里面也有1,那么1就是两个集合的交集。
理解了这个之后,我们来分析下我们的题目,题目需要传入的参数是两个list,我们要找出它们的交集,那么势必需要对两个集合的所有元素进行遍历和比较。我们之前学过遍历一个list可以使用for循环结构,那么两个list怎么办呢?很简单,用两个for循环结构嵌套就好了。我们进行for循环嵌套之后,可以使用if结构来判断当前的两个分属不同list的元素是否相等,如果相等的话,加入返回的结果list中,如果不相等,则不加入。最后将返回的结果list返回即可。思路清晰而明了,难度不是很高,大家仔细琢磨一下我们的源代码就可以理解了。
来这是本期作业题的答案参考代码:
def intersection(list1, list2) :
# 请把你的代码写在这里
# 初始化返回值变量
result = []
# 进行for循环的嵌套,遍历所有的元素
for i in list1:
for j in list2:
# 如果遍历到的两个list的元素相等,则给返回list增加内容
if i == j:
result.append(i)
return result
# test the function
print('Testing intersection() for [1,2,3,4,5] and [2,4,6,8,10]: ' +
str(intersection([1,2,3,4,5], [2,4,6,8,10])))
print('Testing intersection() for [12,45,91] and [36,91]: ' +
str(intersection([12,45,91], [36,91])))
print('Testing intersection() for [2,3,4,5,6] and [7,8,9,10,11]: ' +
str(intersection([2,3,4,5,6], [7,8,9,10,11])))
以下是我们的视频教程:
在线观看:
高清源文件下载:
内容已经隐藏,请注册为本站会员后查看
感谢大家的收看,我们下期再见!