Python学习(17)之 匿名函数和高阶函数[map、reduce、filter、sort、sorted]、

本文详细介绍了Python中的高阶函数,包括map函数用于对列表元素求阶乘,reduce实现序列的压缩运算,filter用于过滤序列中的元素。同时讲解了sort及sorted函数的使用,如按元素长度、字符顺序、绝对值等进行排序。此外,还探讨了匿名函数的概念,给出求和、平方和判断偶数的例子,并提供了编程练习题。
Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

一、高阶函数

1、 map

  • map将传入的函数依次作用到序列的每个元素,并且把结果作为新的序列返回
  • map(): 接收两个参数:一个是函数 ,一个是序列。map(function,iterable1,iterable2),function中的参数值不一定是一个x,也可以是x和y,甚至多个;后面的iterable表示需要参与function运算中的参数值,有几个参数值就传入几个iterable
  • map中如果传入的几个序列的长度不一,那么会依据最短的序列进行计算。
  • Python3下的map()函数返回的是map对象,而map对象又是一个迭代器iterator,不再是list,故需要使用list()强制转换为列表。
  • Python2下的map()函数直接返回的是列表。

例子:对一个序列[-1,3,-4,-5]的每一个元素求绝对值

  • abs函数 : 返回数字的绝对值
    在这里插入图片描述
    输出:
    在这里插入图片描述
对列表中的元素求阶乘
import random

def f(x):
    res = 1
    for i in range (1,x+1):
       res = res * i
    return res
l = [random.randint(2,7) for i in range(10)]

print(list(map(f,l)))

在这里插入图片描述
输出:
在这里插入图片描述

2、reduce函数

  • reduce把函数作用在一序列上, 对一个序列进行压缩运算,得到一个值,其效果为:reduce(f,[x1,x2,x3,x4]) = f(f(x1,x2),x3),x4)
  • reduce必须接受两个参数:函数和可迭代类型。而函数也必须接受两个参数。
  • Python3下的reduce移到了functools模块,使用之前需要 from functools import reduce
  • Python2中的reduce是内置函数。

举个例子:累乘,1到9

from functools import reduce
print(reduce(lambda x,y:x*y,range(1,6)))

在这里插入图片描述
在这里插入图片描述

举个例子:累加,1到100

from functools import reduce
print(reduce(lambda x,y:x+y,range(4)))

在这里插入图片描述
在这里插入图片描述

3、filter过滤函数

  • filter()函数接受函数和序列,函数作用于序列里的每个元素,对其进行判断,返回True或False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件的元素组成的新列表。
  • filter(): 接收两个参数:一个是函数 ,一个是序列。 函数必须返回True或False
  • Python3下的filter()函数返回的是filter对象,不再是list,故需要使用list()强制转换为列表。
  • Python2下的 filter函数直接返回的是列表。

例子 :输出1~100的偶数

在这里插入图片描述

输出:
在这里插入图片描述

4、sort及sorted

  • sort函数仅可作用于list列表,在原list上直接排序,不会创建新的list。 Python3中,sort函数有两个可选参数:key,reverse。 参数reverse指定排序:reverse=False正序,reverse=True倒序。 参数key指定了只含一个参数的方法,用来从列表的每个元素提取比较键。Python2中,sort函数有3个函数:key,reverse,cmp。
  • sorted函数所有可迭代对象都可以用sorted来排序,不会改变原来的对象,排序后的结果是新生成的。
4.1 通过元素长度排序

在这里插入图片描述

输出:
在这里插入图片描述

4.2 通过元素的字符排序

在这里插入图片描述
输出:

在这里插入图片描述

4.3 以绝对值倒序排列数组

在这里插入图片描述
在这里插入图片描述

4.4 按照关键字排序

在这里插入图片描述

输出:
在这里插入图片描述

二、匿名函数

  • 匿名函数:在Python中,不通过def来声明函数名字,而是通过lambda关键字来定义的函数。
  • lambda函数能接收任何数量(可以是0个)的参数,但只能返回一个表达式的值,lambda函数是一个函数对象,直接赋值给一个变量,这个变量就成了一个函数对象。
  • 语法:lambda 参数:表达式 先写lambda关键字,然后依次写匿名函数的参数,多个参数中间用逗号连接,然后是一个冒号,冒号后面写返回的表达式。
  • 符合lambda函数的情况:(任意多个参数和一个返回值),并且只有一个地方会使用这个函数,不会在其他地方重用,可以使用lambda函数

1、求和

在这里插入图片描述
在这里插入图片描述

2、平方

在这里插入图片描述
在这里插入图片描述

3、偶数

在这里插入图片描述
在这里插入图片描述

练习

(2018-携程-春招题)一整形数组中,将数组中所有的0移动到末尾,非0项保持不变

在这里插入图片描述
在这里插入图片描述

3、奇数放在前面 偶数放在后面

在这里插入图片描述
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值