Python基础(6)-高阶函数

map

map()函数接收两个参数,一个是函数,一个是Iterable map将传入的函数依次作用到序列的每个元素。并把结果作为新的Iterator 返回。
比如:

def f(x):
    return x*x

执行结果如下:

>>> r=map(f,[1,2,3,4,5,6,7,8,9])
>>> r
<map object at 0x0000025CFD3E2A90>
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]

所以map()函数是将运算规则抽象了。我们可以使用map计算更加复杂的问题。

reduce

from functools import reduce
reduce 用法:把函数作用在序列[x1,x2,x3,x4..]上,这个函数必须接受两个参数,reduce 将结果继续和序列的下一个元素做累积计算。

reduce(f,[x1,x2,x3])=f(f(f(x1,x2),x3),x4)

比如序列求和:

def f(x1,x2):
    return x1+x2

执行结果如下:

>>> from functools import reduce
>>> r=reduce(f,[1,2,3,4,5,6,7,8,9,10])
>>> r
55
>>> 

filter

作用:filter() 也接受一个函数和一个序列,把传入的函数依次作用于每个元素,根据返回值是True 还是False决定保留还是丢弃该元素 ,返回值是一个Tterator 所以要想完成计算结果,需要用list() 来获得所有结果并返回list
例如:计算出所有的素数,并显示出1000以内的素数。

def s():#生成一个奇数列
    n = 1
    while True:
        n = n + 2
        yield n
def c(n):
    return lambda x: x % n>0
def f():#先生成一个无限序列,然后循环使用filter函数将序列不满足的筛除,并生成新的序列
    yield 2
    it = s() # 初始序列
    while True:
        n = next(it) # 返回序列的第一个数
        yield n
        it = filter(c(n), it) # 构造新序列
def fun():#将结果输出
    for n in f():
        if n < 1000:
            print(n)
        else:
            break

sorted

作用:可以对list进行排序
比如:

sorted([23,14,-13,4])

执行结果为:

>>> sorted([23,14,-13,4])
[-13, 4, 14, 23]

sorted()函数也可以接受一个key 实现自定义排序

 sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
['about', 'bob', 'Credit', 'Zoo']
>>> 

如上,将字符串按不分大小写进行排序。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值