python常用高阶函数
常用高阶函数
-
zip函数
- zip压缩:将多个可迭代对象对应索引的值组成一个元素,以最短的元素为准
- zip解压:压缩的反向过程
- 代码演示
list2=[1,2,3]
list3=[4,5,6,7]
result=list(zip(list2,list3))
print(result)
输出: [(1, 4), (2, 5), (3, 6)]
print(list(zip(*result)))
输出: [(1, 2, 3), (4, 5, 6)]
-
enumerate(iterable, start=0)
- 作用:获取元素以及元素对应的索引位置
- enumerate()函数返回的是一个可迭代对象,需要另外获取值
- 参数
- iterable:字符串、列表、元组
- start:索引起始值是指函数生成的对应元素下表的起始值,并不是原列表的索引值
- 返回值
-
list
"""
start参数默认从0开始
"""
test_list = ['a', 'b', 'c']
result = list(enumerate(test_list))
print(result)
输出:[(0, 'a'), (1, 'b'), (2, 'c')]"""
指定start参数
"""
test_list = ['a', 'b', 'c']
result = list(enumerate(test_list,2))
print(result)
输出:[(2, 'a'), (3, 'b'), (4, 'c')] -
tuple:处理方式同list
-
set:处理方式同list
-
for循环遍历
test_list = ['a', 'b', 'c']
result = list(enumerate(test_list,2))
for k in result:
print(k,end='')
print('')
for k,v in result:
print('结果为:{} {} '.format(k,v),end='')
输出:
(2, 'a')(3, 'b')(4, 'c')
结果为:2a 结果为:3b 结果为:4c
-
-
lambda
- 特点
- 无需起名字
- 实现简单功能,一行代码就能实现
- 调用的时候传入参数个数为lambda后面冒号左边的参数个数,参数也是由它们接收
result=lambda x,y:x**y
print(result(2,3))
输出:8 - 特点
-
map
-
遍历序列,对序列中每个元素进行操作,最终获取新的序列
-
参数
- func:接收一个函数
- Iter :接收一个可迭代对象,可迭代对象个数与函数参数一致
-
代码演示
"""
使用场景:两个列表对应索引位置求和
第一种写法
"""
def test_demo(x,y):
return x+y
res=map(test_demo,[1,2,3], [1,2,3])
print(list(res))
输出:[2, 4, 6]"""
结合lambda函数
"""
print (map(lambda x, y : x + y, range(1,4), range(1,4))
输出:[2, 4, 6]
-
-
filter
-
作用:‘筛选函数’,filter()把传人的函数依次作用于序列的每个元素,然后根据返回值是True还是false决定保留还是丢弃该元素,返回符合条件的序列
-
参数
- function:接收一个函数
- iterable:接收一个可迭代对象
-
代码演示
"""
使用场景:筛选出10以内的偶数
第一种写法
"""
def test_demo(x):
return x % 2 == 0
res2=filter(test_demo,[1,2,3,4,5,6,7,8,9])
print(list(res2))
输出:[2, 4, 6, 8]"""
结合lambda函数
"""
res3=filter(lambda x : x%2==0,range(1,10))
print(list(res3))
输出:[2, 4, 6, 8]
-
-
reduce
-
作用:对于序列内所有元素进行累计操作,即是序列中后面的元素与前面的元素做累积计算
-
参数
- function:接收一个参数
- 22
-
代码演示
"""
使用场景:1-5求和
第一种写法
"""
from functools import reduce
def test_demo(x,y):
return x + y
res=reduce(test_demo,[1,2,3,4,5])
print(res)
输出:15"""
结合lambda函数
"""
from functools import reduce
res=reduce(lambda x,y:x+y,range(6))
print(res)
输出:15
-
欢迎来到testingpai.com!
注册 关于