关键词:
1.map函数:(将列表里的每个元素都进行运算,最后得到原列表)
r = [4, 8, 7, 1] def cat(array): o = [] for i in r: o.append(i**2) return o v = cat(r) print(v)
r = [4, 8, 7, 1] def addone(x): return x+1 def cat(func,array): #(func就是运行方法,array就是值) o = [] for i in r: a = func(i) o.append(a) return o v = cat(addone,cat) print(v)
print(map_test(lambda x:x**2,num_l)) #不定义函数,直接用匿名函数
#终极版本 def map_test(func,array): #func=lambda x:x+1 arrary=[1,2,10,5,3,7] ret=[] for i in array: res=func(i) #add_one(i) ret.append(res) return ret print(map_test(lambda x:x+1,num_l)) res=map(lambda x:x+1,num_l) print(‘内置函数map,处理结果‘,res) # for i in res: # print(i) print(list(res)) print(‘传的是有名函数‘,list(map(reduce_one,num_l))) msg=‘linhaifeng‘ print(list(map(lambda x:x.upper(),msg)))
2.filter函数:一步一步进化成filter函数,类似map函数,第一个参数就是方法(得到一个布尔值,得到ture的值),第二个参数就是一个可迭代对象
(将列表里的每个元素都进行运算,最后得到一个 新列表)
r = ["sbnm","sbo","sbp","longkuiqi"] ret = [] for i in r: if not i.startswith("sb"): ret.append(i) print(ret)
r = ["sbnm","sbo","sbp","longkuiqi"] def cat(array): ret = [] for i in array: if not i.startswith("sb"): ret.append(i) return ret print(cat(r))
r = ["dfssb","fdfsb","esb","longkuiqi"] def dog(n): return n.endswith("sb") def cat(func,array): ret = [] for i in array: if not func(i): ret.append(i) return ret v = cat(dog,r) print(v)
r = ["dfssb","fdfsb","esb","longkuiqi"]
v = list(filter(lambda n:not n.endswith("sb"),r)) #因为默认是返回ture的值,可以用not来得到false的值 print(v)
3.reduce函数:(将列表里的每个元素都进行运算,最后得到一个最终结果)
# from functools import reduce
num = [1,2,3,4,100] res = 0 for i in num: res += i print(res)
def multi(x,y): #注意乘法需要两个参数 return x*y
def reduce_test(func,array): res=array.pop(0) for num in array: res=func(res,num) return res print(reduce_test(lambda x,y:x*y,num_l))
from functools import reduce num = [45,8,5,4] print(reduce(lambda x,y:x+y,num,2))
4.小结
#处理序列中的每个元素,得到的结果是一个‘列表’,该‘列表’元素个数及位置与原来一样 # map() #filter遍历序列中的每个元素,判断每个元素得到布尔值,如果是True则留下来 people=[ ‘name‘:‘alex‘,‘age‘:1000, ‘name‘:‘wupei‘,‘age‘:10000, ‘name‘:‘yuanhao‘,‘age‘:9000, ‘name‘:‘linhaifeng‘,‘age‘:18, ] print(list(filter(lambda p:p[‘age‘]<=18,people))) #reduce:处理一个序列,然后把序列进行合并操作 from functools import reduce print(reduce(lambda x,y:x+y,range(100),100)) print(reduce(lambda x,y:x+y,range(1,101)))
什么是函数式编程(代码片段)
主要参考的是《Java函数式编程》高清华译版本定义函数式编程其实就是编写非故意副作用的程序。课外知识——什么是函数函数简单的说就是从A(定义域)到B(值域)的一个映射过程。当然具体的函数还有各种限制,具体见链接。... 查看详情
scala函数式编程函数式的数据结构下(代码片段)
前情提要Scala函数式编程指南(一)函数式思想介绍scala函数式编程(二)scala基础语法介绍Scala函数式编程(三)scala集合和函数Scala函数式编程(四)函数式的数据结构上1.List代码解析今天介绍的内容,主要是对上一篇介绍的sca... 查看详情
函数式编程--为什么要学习函数式编程?(代码片段)
函数式编程(FunctionalProgramming,FP)什么是函数式编程?通过纯函数来实现一些细粒度的函数,然后把这些细粒度的函数组合成功能更强大的函数,这一过程就是函数式编程,经典函数式编程库:lodash函数式编程是编程范式之一,... 查看详情
函数式编程基本概念(代码片段)
编程范式命令式编程(Imperative)声明式编程(Declarative)函数式编程(Functional)面向对象、泛型、元编程也都是很主要的编程范式命令式编程:命令式编程的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么声... 查看详情
函数式编程(代码片段)
编程的方法论:面向过程面向对象函数式 函数式编程的定义:函数式=编程语言定义的函数+数学意义上的函数(先想到一个数学模型,再用python上的功能实现这个逻辑) y=x+1defcat():returnx+1 特性:1.不用变量保存状... 查看详情
函数式编程简介-附入门方法(代码片段)
WHAT?什么是函数式编程?函数式编程是一种编程范式。编程范式又是什么?编程范式是一种解决问题的思路。我们熟悉的命令式编程把程序看作一系列改变状态的指令;而函数式编程把程序看作一系列数学函数映射的组合。编程... 查看详情
前端学习之函数式编程—函数式编程概念+头等函数(代码片段)
什么是函数式编程函数式编程(functionprogrammingFP)FP是编程范式之一,我们常听说的还有,面向过程编程,面向对象编程函数式编程的思维方式把现实世界的事物和事物之间的联系抽象到程序世界(对运算... 查看详情
textpython函数式编程(代码片段)
函数式编程(代码片段)
编程的三种方法论:1面向过程2函数式3面向对象---------------------------------------------#把函数当做参数传给另一个函数deffoo(n):print(n)defbar(name):print(‘mynameis%s‘%name)foo(bar(‘alex‘))输出结果:mynameisalexNone------------------------# 查看详情
函数式编程(代码片段)
《Python从小白到大牛》第10章函数式编程定义函数函数参数使用关键字参数调用函数参数默认值可变参数函数返回值无返回值函数多返回值函数函数变量作用域生成器嵌套函数函数式编程基础函数类型上述代码第①行重构了calcula... 查看详情
javascript函数式编程基础(代码片段)
javascript函数式编程基础函数调用引用做返回值/*javascript函数式编程基础*/functionsayHello()return"helloworld";letresult=sayHello();//函数调用letfn=sayHello;//函数引用console.log(fn());//helloworld//函数做返回值functionee( 查看详情
scala学习(函数式编程面向对象编程)(代码片段)
文章目录函数式编程基础函数编程函数定义函数参数函数至简原则高阶函数编程面向对象编程基础面向对象编程高阶面向对象编程函数式编程基础函数编程函数定义packagelearn03objectdemo01defmain(args:Array[String]):Unit=//无参、无返回... 查看详情
scala学习(函数式编程面向对象编程)(代码片段)
文章目录函数式编程基础函数编程函数定义函数参数函数至简原则高阶函数编程面向对象编程基础面向对象编程高阶面向对象编程函数式编程基础函数编程函数定义packagelearn03objectdemo01defmain(args:Array[String]):Unit=//无参、无返回... 查看详情
函数式编程java函数式编程学习(代码片段)
函数式编程-Stream流函数式编程思想概述面向对象思想关注的是用什么对象完成什么事情,而函数式编程思想就类似于数学中的函数,主要关注的是对数据进行了什么操作优点代码简洁,开发快;接近自然语言... 查看详情
函数式编程java函数式编程学习(代码片段)
函数式编程-Stream流函数式编程思想概述面向对象思想关注的是用什么对象完成什么事情,而函数式编程思想就类似于数学中的函数,主要关注的是对数据进行了什么操作优点代码简洁,开发快;接近自然语言... 查看详情
3.有点难~python函数式编程中itertools模块(代码片段)
本篇博客将为你介绍itertools模块中处理可迭代集合的相关函数。容器与可迭代对象在正式开始前先补充一些基本概念在Python中存在容器与可迭代对象容器:用来存储多个元素的数据结构,例如列表,元组,字典... 查看详情
《java8实战》读书笔记12:函数式编程(代码片段)
《Java8实战》读书笔记12:函数式编程第13章函数式的思考13.1实现和维护系统13.1.1共享的可变数据13.1.2声明式编程13.2什么是函数式编程13.2.1函数式Java编程13.2.2引用透明性13.2.3面向对象的编程和函数式编程的对比13.2.4函数式编... 查看详情
玩转javascript面试:何为函数式编程?(代码片段)
函数式编程在JavaScript领域着实已经成为一个热门话题。就在几年前,很多JavaScript程序员甚至都不知道啥是函数式编程,但是就在近三年里我看到过的每一个大型应用的代码库中都包含了函数式编程思想的大规模使用。函数式编... 查看详情