当前位置:
首页 > temp > python入门教程 >
-
python 函数式编程-匿名函数、高阶函数
1、匿名函数是什么?
def add(x,y): return x+y print(add(1,2)) #普通函数的定义和调用
f = lambda x,y:x+y print(f(1,2)) #匿名函数的定义,并将这个函数赋值给变量,使用变量调用函数 print(f(1,2)) # [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test24.py" # 3
以上不能体现匿名函数的方便用法。因为一般lambda表达式是不赋值给变量用的。
对lambda表达式的新理解(202103011):lambda会返回一个函数对象,但这个对象不会赋给一个标识符,而def则会把函数对象赋值给一个变量(函数名)
2、三元表达式
与其他语言不通,python的格式是
为真的结果 if 为真的条件 else 为假的结果
x = 3 y = 2 r = x if x>y else y print(r) # [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test25.py" # 3
3、map:使用场景--数学上的映射,内部执行了for循环,挨着盘用function 算了一下
语法:map(function,interator)
list_x = [1,2,3,4,5,6,7] def square(x): return x*x r = map(square,list_x) print(list(r)) # [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test26.py" # [1, 4, 9, 16, 25, 36, 49]
总结1~3:map是要结合lambda函数使用的
list_x = [1,2,3,4,5,6,7] r = map(lambda x:x*x, list_x) print(list(r)) # [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test26.py" # [1, 4, 9, 16, 25, 36, 49]
简洁一点。
多个入参
list_x = [1,2,3,4,5,6,7] list_y = [1,2,3,4,5,6,7] r = map(lambda x,y:x*x+y, list_x,list_y) print(list(r)) # [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test26.py" # [2, 6, 12, 20, 30, 42, 56]
又一个入参比较短,输出长度按照比较短的那个输出
list_x = [1,2,3,4,5,6,7] list_y = [1,2,3,4,5] r = map(lambda x,y:x*x+y, list_x,list_y) print(list(r)) # anson@ansonwandeMacBook-Pro python_ToolCodes % python3 test26.py # [2, 6, 12, 20, 30]
4、reduce
语法 def reduce(function, sequence, initial=None)
#连续计算,连续调用lambdafrom functools import reduce
list_x = [1,2,3,4,5] #list_y = [1,2,3,4,5] r = reduce(lambda x,y: x+y,list_x) print(r) # [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test27.py" # 15 # 计算过程 # x=1,y=0 y=1--->第一次调用lambda # x=2,y=1 y=3--->第二次调用lamda # x=3,y=3 y=6 # x=4,y=6 y=10 # x=10,y=5 y=15
给个初始值y=10
from functools import reduce list_x = [1,2,3,4,5] #list_y = [1,2,3,4,5] r = reduce(lambda x,y: x+y,list_x,10) print(r) # [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test27.py" # 25 # 计算过程 # x=1,y=10 y=11 # x=2,y=11 y=13 # x=3,y=13 y=16 # x=4,y=16 y=20 # x=5,y=20 y=25
5、filter:应用场景,过滤为0数字、过滤大写字母之类的
基础语法:
def filter(function: None, iterable: Iterable[Optional[_T]])
过滤为0的数字 list_x = [1,0,1,0] # def filter_data(x): # return x # for x in list_x: # filter_data(x) r = filter(lambda x:x,list_x) #r = filter(filter_data,list_x) print(list(r)) # [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test28.py" # [1, 1]
原文:https://www.cnblogs.com/ansonwan/p/13457761.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数