python匿名函数&高阶函数map reduce filter

本文详细介绍了Python中的lambda匿名函数、map函数、reduce函数和filter函数的使用。通过实例展示了如何利用lambda进行简单计算,map对序列进行映射,reduce进行累计操作,以及filter过滤序列。此外,还讲解了sort排序字典和自定义函数实现类似map的功能。这些基础知识对于理解和使用Python编程至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lambda匿名函数:

特征:

  •  没有函数名,没有括号
  • 只能实现简单的表达式计算或函数调用
  • 函数体中不能使用return if while for in,可以使用 if实现的三目运算

格式:

lambda 形参1 形参2 : 单行表达式或函数调用

使用场景:

不能实现复杂功能,在使用时一般会用于实现一些简单的,一次性使用的场景

python中一切都是对象,每个对象都有内存地址,都会有一个引用,通过这个引用就可以找到对象并使用它

func = lambda x: x+2
print(func)
print(func(2))

lambda默认返回的是表达式的计算结果,不需要添加return

func = lambda m, n: m if m > n else n
print(func)
print(func(10, 2))
print(func(0, 2))

map

map() 根据提供的函数对指定序列进行映射

对参数列表中的每一项执行某个函数并返回每一项的执行结果

list = [2, 4, 6, 8]


# map需要利用这个函数计算每一个元素的映射值,因为该函数有且只能有一个参数
def func(x):
    return x + 1


res = map(func, list)
for i in res:
    print(i)
3
5
7
9

利用lambda代替函数传参

list = [2, 4, 6, 8]


def func(x):
    return x + 1


res_list = map(lambda n : n + 1, list)
for i in res_list:
    print(i)

map实现原理

list = [2, 4, 6, 8]


def func(x):
    return x + 1


def my_map(func, list):
    new_list = []
    for i in list:
        n = func(i)
        new_list.append(n)

    return new_list


res_list = my_map(lambda n: n + 1, list)
print(res_list)

reduce:

reduce函数对参数序列中的元素进行累计(求和 拼接)

import functools


list = [1, 2, 3, 4, 5]


def func(a,b):
    return a + b


res = functools.reduce(func, list)
print(res)

使用lambda作为reduce参数

import functools


list = ['h', 'e', 'l', 'l', 'o']
res = functools.reduce(lambda a, b: a + b, list)
print(res)

filter 过滤序列,过滤掉不符合条件的元素,返回一个filter对象,如果要转换为列表,可以使用list()

接受两个参数,函数和序列,序列中每个元素传递给函数,返回过滤为true的元素

mylist = ['1212', '  ', 'hi', '312', 'abc12', '123abc']


res = filter(lambda s: s.isdigit(), mylist)
print(res)

for s in list(res):
    print(s)

sort排序字典:

默认sort是不能对字典进行比较排序的,但可以通过key指定排序方式

my_list = [
    {
        'id': 1,
        'name': 'jack',
        'age': 12
    },
    {
        'id': 3,
        'name': 'rose',
        'age': 20
    },
    {
        'id': 2,
        'name': 'jerry',
        'age': 18
    }
]

my_list.sort(key=lambda x: x['id'])
print(my_list)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值