python3 中的 map,reduce,filter函數

在python2 中直接打印map,filter函數會直接輸出結果。但在python3中做了些修改,輸出前需要使用list()進行顯示轉換,而reduce函數則被放到了functools包中,代碼如下

from functools import reduce
import math

def format_name(s):
    return s.upper()

def is_odd(x):
    return x % 2 == 1

def sqr_integer(x):
    r = math.floor(math.sqrt(x))
    return x == r*r

def f(x, y):
    return x + y
# map 把函數 f 依次作用在 list 的每個元素上,得到一個 iterator  並返回。
print(list(map(format_name, ['adam', 'LISA', 'barT'])))

# reduce()傳入的函數 f 必須接收兩個參數,reduce()對list的每個元素反覆調用函數f,並返回最終結果值。reduce()還可以接收第3個可選參數,作爲計算的初始值。
print(reduce(f, [1, 3, 5, 7, 9], 100))

# filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的iterator。
print(list(filter(is_odd, [1, 4, 6, 7, 9, 12, 17])))

print(list(filter(sqr_integer,range(100))))

運行結果如下

['ADAM', 'LISA', 'BART']
125
[1, 7, 9, 17]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章