5 python中的lambda表达式

lambda 函数,又称匿名函数(不需要指定函数名)。当我们需要定义一个函数时,又懒得写命名时时。就可以通过lambda实现。另外使得代码更加简洁。

匿名函数语法:

lambda(关键词):x,y,… (代表函数的入参):m(m代表返回值,即return m)
1 比如我们定义一个add函数

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

改写成lambda的方式如下:

lambda_add = lambda x, y: x + y
print(lambda_add(1, 2)) # 3 
print(add(1, 2)) # 3
# x为入口参数,x平方为函数体
m = lambda x : x ** 2

print(m(1))  # 1
print(m(2))  # 4
print(m(3))  # 9

# 无论入口参数为什么都会返回1
m = lambda x: 1
print(m('abc')) # 1
print(m(12)) # 1

# 输入任意多个数,求和
m = lambda *args : sum(args)
print(m(1, 2, 3)) # 6

m = lambda x : x if x < 10 else '-'
print(m(1)) # 1
print(m(5)) # 5
print(m(11)) # -

全局函数

在python中有几个已经定义好的全局函数供我们直接使用
1、sort函数。
对列表中的元素进行排序,默认升序排列。
sort(key=None, reverse=False)

# print([[6, 1], [3, 2], [9, 4], [(1, 5)]].sort(lambda x: x[0]))
# 按照二维列表的第一个元素进行排序
# [(1, 5), (3, 2), (6, 1), (9, 4)]
print(sorted([(6, 1), (3, 2), (9, 4), (1, 5)], key=lambda x: x[0]))


dict1 = {'c': 'v1', 'a': 'v2', 'b': 'v3'}
# 按照字典的键排序,如果按照值排序则lambda x: x[1] ,返回元组组成的列表
# [('a', 'v2'), ('b', 'v3'), ('c', 'v1')]
print(sorted(dict1.items(), key=lambda x: x[0]))

# 按照4-x的绝对值进行排序(离4距离的大小排序)
# [4, 3, 5, 2, 6, 1, 7]
print(sorted([1, 2, 3, 4, 5, 6, 7],key=lambda x: abs(4-x)))

2、filter函数。
用于过滤列表中符合条件的元素。
filter(function, Iterable)

# 过滤列表中能被2整除的--- 偶数
lst = filter(lambda x : x % 2 == 0, [1, 2, 3, 4, 5])
# [2, 4]
print(list(lst))

# 过滤能被3整除的数
# [3]
lst = filter(lambda x : x % 3 == 0, [1, 2, 3])
print(list(lst))


# 求 1- 100内的整数平方根
import math
lst = filter(lambda x : math.sqrt(x) % 1 == 0, range(1, 101))
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print(list(lst))



3、map函数。
根据提供的函数对执行的序列做映射。
map(function, Iter)

# 对列表元素求平方
m = map(lambda x : x ** 2, [1, 2, 3, 4])
# [1, 4, 9, 16]
print(list(m))

# 两个列表,相同位置的元素相加
m = map(lambda x, y: x + y, [1, 2, 3, 5], [9, 8, 7, 5])
# [10, 10, 10, 10]
print(list(m))

# 将列表中的偶数值修改为0,奇数保持不变
m = map(lambda x : 0 if x % 2 == 0 else x, [9, 4, 1, 6, 8])
# [9, 0, 1, 0, 0]
print(list(m)) 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值