点击上方“Python3X”,选择“置顶或者星标”
第一时间收到精彩推送!
Python Every Day, 第 5 天
lambda 函数,又称匿名函数(不需要指定函数名)。当我们需要定义一个函数时,又懒得写命名时时。就可以通过lambda实现。另外使得代码更加简洁。
匿名函数语法:
lambda(关键词):x,y,.. (代表函数的入参):m(m代表返回值,即return m)
先看一个简单的例子:
比如我们定义一个方法add()
def add(x, y): return x + y
return x + y
改写成lambda的方式如下:
lambda_add = lambda x, y: x + yprint(lambda_add(1, 2)) # 3 print(add(1, 2)) # 3
print(lambda_add(1, 2)) # 3
print(add(1, 2)) # 3
其他例子:
# x为入口参数,x平方为函数体m = lambda x : x ** 2print(m(1)) # 1print(m(2)) # 4print(m(3)) # 9# 无论入口参数为什么都会返回1m = lambda x: 1print(m('abc')) # 1print(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)) # 1print(m(5)) # 5print(m(11)) # -if x < 10 else '-'print(m(1)) # 1print(m(5)) # 5print(m(11)) # -10 else '-'print(m(1)) # 1print(m(5)) # 5print(m(11)) # -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)))# [4, 3, 5, 2, 6, 1, 7]print(sorted([1, 2, 3, 4, 5, 6, 7],key=lambda x: abs(4-x)))# [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 mathlst = filter(lambda x : math.sqrt(x) % 1 == 0, range(1, 101))# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]print(list(lst))
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))
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))
往期Python Every Day
[每日一题]3、Python实现删除list中重复元素的几种方式
[每日一题]2、Python中的类的定义和装饰器@classmethod与@staticmethod

感谢您的阅读
长按二维码关注
公众号「Python3X」