python程序设计:计算多个集合的交集

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版权协议,转载请附上原文出处链接和本声明。