Python-函数式编程
2021/12/23 17:08:56
本文主要是介绍Python-函数式编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
概述
函数式编程并非函数编程那么简单,而是将计算机的运算视为数学上的运算,比起面向过程,函数式编程更注重的是执行结果而非执行的过程。python并非一门函数式编程语言,但仍有很多函数式编程的特性,如lambda、map、reduce、filter
lambda
语法格式:
# 有名的函数 def func(x,y): return x+y # 返回两数之和 # 匿名函数,参数不需要加括号,返回不需要return,默认带了return # 第一种写法 res = lambda x,y:x+y # res即指向该匿名函数的内存地址 print(res(1,2)) # 加括号调用,并传入参数 # 第二种写法 res = (lambda x,y:x+y)(1,2) # 直接传入参数 print(res)
取薪资最高的名字
传统方式
def func(k): return salaries[k] salaries = { 'wx': 1000, 'bob': 2000, 'marry': 3000 } res = max(salaries, key=func) print(res) # max的工作流程 ''' max迭代传入的salaries,得到一个个的k,也就是名字,然后将名字传给key,即key=func(k),拿到value key=func不需要收到传参,会自动从前面的迭代的salaries传入 首先迭代wx,将名字传给func,得到薪资,再迭代bob,将k传给func,得到薪资。。。 然后进行比较,得到最大值 min也是类似的 '''
使用lambda
salaries = { 'wx': 1000, 'bob': 2000, 'marry': 3000 }
res = max(salaries, key=lambda k: salaries[k])
# res = max(salaries, key=func) # 对比着看,lambda那部分就是key=func,不过传统方式,函数单独写了
print(res)
sorted
排序
salaries = { 'wx': 1000, 'bob': 2000, 'marry': 3000 } res = sorted(salaries, key=lambda k: salaries[k]) ''' 通过lambda,将salaries传过来的k的值取出来,然后给sorted排序,然后输入排序后的结果 ''' print(res)
map
映射
通过列表生成式
lst = ['hushow', 'bob', 'marry'] res = [name + '_dsb' for name in lst] # 得到的结果是一个列表生成式对象 for i in res: # 循环取值 print(i)
通过map+lambda
# map+lambda实现 lst = ['hushow', 'bob', 'marry'] res = map(lambda name: name + '_dsb', lst) # 迭代列表l(相当于 for name in l),将迭代的值给name,传给lambda,然后返回 print(res.__next__()) for i in res: print(i)
filter
过滤
# 过滤以sb结尾的 # 以生成器生成式实现 l = ['hushow', 'bob_sb', 'marry_sb', 'lxx'] res = (name for name in l if name.endswith('sb')) print(res.__next__()) print(res.__next__())
使用filter+lambda
# 以filter实现 l = ['hushow', 'bob_sb', 'marry_sb', 'lxx'] res = filter(lambda name: name.endswith('sb'), l) # 相当于 res = filter(lambda name:(return) name.endswith('sb'),l),加了省略了return print(res.__next__()) print(res.__next__()) # 迭代列表l(相当于for name in l),每次将迭代的值传给name,判断是否以sb结尾,不需要if # 判断的结果两种,True和False,filter默认留下True的结果print(res.__next__())
reduce
from functools import reduce res = reduce(lambda x, y: x + y, [1, 2, 3], 10) # 指定初始值10 print(res) # 16,累加 res = reduce(lambda x, y: x + y, ['a', 'v', 'b'], 'hello') print(res) # helloavb
END.
这篇关于Python-函数式编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-27使用python 将ETH账户的资产打散
- 2024-09-26Python编程基础
- 2024-09-2610 种方法写出更好的 Python 代码
- 2024-09-25Python编程基础详解
- 2024-09-25Python编程入门教程
- 2024-09-25从零开始使用Python构建LLaMA 3
- 2024-09-23Python中理解和使用树形结构的简单教程
- 2024-09-23Python 编程基础入门
- 2024-09-18初探Python股票自动化交易:入门指南
- 2024-09-18Python量化入门:轻松掌握量化分析基础与实战