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、驗證:

輸入樣例:
在這裏插入圖片描述
樣例輸出:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章