python中 lambda, map ,filter ,reduce讲解
lambda
是匿名函數 同來表達簡單的函數
使用lambda函數應該注意的幾點:
lambda定義的是單行函數,如果需要復雜的函數,應該定義普通函數
lambda參數列表可以包含多個參數,如 lambda x, y: x + y
lambda中的表達式不能含有命令,而且只限一條表達式
默認返回表達式中的計算結果
例子,外部傳參數
加法 。x,y為參數,返回x+y
直接傳參數
兩個括號,第一個括號把lambda括起來,第二個括號傳入實參。
其他
import numpy as np f=(lambda x,y:x+y)(5,6) print(f)def f1(x,y):return x+y f2=(lambda x,y:f1(x,y))(5,6) print(f2)結果都是11
python序列內置函數
map ,filter ,reduce都是python 內置的序列處置函數。
map
map函數的原型是map(function, iterable, …),它的返回結果是可迭代對象。
參數function傳的是一個函數名,可以是python內置的,也可以是自定義的。
參數iterable傳的是一個可以迭代的對象,例如列表,元組,字符串這樣的。
這個函數的意思就是將function應用于iterable的每一個元素。注意到沒有,iterable后面還有省略號,意思就是可以傳很多個iterable,如果有額外的iterable參數,并行的從這些參數中取元素,并調用function。如果一個iterable參數比另外的iterable參數要短,多余的將被舍棄。
f=lambda x,y:x+y c=map(f,[1,2,3,4],[2,3,4,5,6]) print(c) c=list(c) print(c)filter
filter()函數是 Python 內置的另一個有用的高階函數,filter()函數接收一個函數 f 和一個序列,函數 f 的作用是對每個元素進行判斷,返回 True或 False,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新的序列Iterator
#例子 過濾掉小于0的數
def f(x):if x>0:return x c1=filter(f,[-1,-2,3,4,-7]) c=list(filter(f,[-1,-2,3,4,-7])) print(c1) print(c)
reduce
reduce函數與map函數有不一樣地方,map操作是并行操作,reduce函數是把多個參數合并的操作,也就是從多個條件簡化的結果。
reduce(function, sequence, initial)
sequence可迭代對象
function函數
initial初始值:只能指定一個,如果有多個參數,其余從sequence選
function參數是一個有兩個參數的函數,reduce依次從sequence中取一個元素,和上一次調用function的結果做參數再次調用function。
第一次調用function時,如果提供initial參數,會以sequence中的第一個元素和initial作為參數調用function,否則會以序列sequence中的前兩個元素做參數調用function。
#計算1到5的階乘
def add(x, y):return x * y print(reduce(add, [1,2,3,4,5]))結果120
4*計算1到5的階乘
from functools import reduce def add(x, y):return x * y print(reduce(add, [1,2,3,4,5],4))結果480
總結
以上是生活随笔為你收集整理的python中 lambda, map ,filter ,reduce讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基金份额净值计算公式
- 下一篇: 最短路径Dijkstra讲解,工具包使用