1、题目要求:
编写程序,输入包含若干集合的列表,输出这些集合的交集。要求使用reduce()函数和lambda表达式完成。
2、题目解读:
(1)reduce() 函数:
语法
reduce(function, iterable[, initializer])
- function – 函数,有两个参数
- iterable – 可迭代对象
- initializer – 可选,初始参数
实例
以下实例展示了 reduce() 的使用方法(采用“菜鸟教程案例”):
>>>def add(x, y) : # 两数相加
... return x + y
...
>>> reduce(add, [1,2,3,4,5]) # 计算列表和:1+2+3+4+5
15
>>> reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数
15
(1)lambda表达式:
介绍
lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
实例
# x,y为函数参数,‘:’后面的就为函数里的操作,由于是匿名函数,所以这里并没有定义函数名称
# 所以这个匿名函数做的事情就是把传入的下x,y相加
add = lambda x, y : x+y
add(1,2) # 结果为3
3、代码:
#!/usr/bin/python
from functools import reduce
# 定义变量
numArr = []
# 接收用户输入集合个数,根据用户输入是数字,循环让用户输入集合
n = input("请输入集合个数:")
# 判断n是否为整数
if n.isdigit() == False:
print("输入非法字符,程序退出!")
else:
for k in range(int(n)):
tip = "第输入 %s 个集合列表 : " % str(k+1)
# 输入集合,将 numSet 指向用户输入的集合
numSet = {n for n in input(tip).split(' ')}
# 将集合放入 numArr 列表中
numArr.append(numSet)
# 使用reduce()函数计算所有集合的交集
# reduce(function - 函数, iterable - 可迭代对象)
# lambda 匿名函数 ':'前是参数,后面是方法
result = reduce(lambda a, b: a & b, numArr)
# 输出结果
if result:
print(result)
else:
print("所有集合的并集为空!")
4、验证:
输入样例:
样例输出:
版权声明:本文为qq_41799219原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。