编程软件python中的if用法-python 函数式编程工具

1.Lambda函数

Python使用lambda支持在运行时创建匿名函数(没有绑定名称的函数)。

>>> g=lambda x:x+2

>>>

>>> print(g(8))

10

lambda函数并没有使用return语句---经常包含一个被返回的表达式。可以把lambda函数定义放置在任何需要函数的地方, 也不需要将其赋值给一个变量。

>>> def make_incrementor(n): return lambda x:x+n

>>> f=make_incrementor(2)

>>> g=make_incrementor(6)

>>> print(f)

. at 0x02A5DC00>

>>> print(f(42),g(23))

44 29

>>> print (make_incrementor(22)(12))

34

>>>

2.filter(),map(),reduce()函数

函数编程中lambda经常和一些典型的函数一起使用,例如:filter(), map() 和 reduce()。

filter()

filter(function, sequence) 返回一个 sequence(序列),包括了给定序列中所有调用 function(item) 后返回值为 true 的元素(如果可能的话,会返回相同的类型),并且,在python 3 中,map(),filter() 返回值已经不再是list,而是iterator,想要使用,只用将iterator 转换成list即可,list(map())

>>> def f(x):return x%3==0 or x%5==0

>>> filter(f,range(2,25))

>>> def f(x):return x%3==0 or x%5==0

>>> list(filter(f,range(2,25)))

[3, 5, 6, 9, 10, 12, 15, 18, 20, 21, 24]

map()

map(function, sequence) 为每一个元素依次调用 function(item) 并将返回值组成一个链表list返回。可以传入多个序列,函数也必须要有对应数量的参数

>>> def cube(x):

return x*x*x

>>> map(cube,range(1,11))

>>> list(map(cube,range(1,11)))

[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

reduce()

reduce(function, sequence) 返回一个单值,它是这样构造的:首先以序列的前两个元素调用函数 function,再以返回值和第三个参数调用,依次执行下去。并且,在python 3中,reduce已经取消,如果使用,可以用fuctools.reduce来调用,但是要先导入fuctools

>>> import functools

>>> def add(x,y): return x+y

>>> functools.reduce(add,range(1,11))

55

例:利用lambda函数和filter求质数

>>> nums = range(2,50)

>>> for i in range(2,8):

nums=list(filter(lambda x:x==i or x%i ,nums))

>>> print(nums)

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

>>>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值