定远建设小学投诉网站,扬州市邗江区建设局网站,可以下载的建站网站,wordpress 修改代码Python之函数进阶-匿名函数
匿名函数
匿名:隐藏名字#xff0c;即没有名称匿名函数:没有名字的函数。Lambda表达式 Python中#xff0c;使用Lambda表达式构建匿名函数。 使用lambda关键字定义匿名函数#xff0c;格式为 lambda [参数列表]: 表达式参数列表不需要小括号。无…Python之函数进阶-匿名函数
匿名函数
匿名:隐藏名字即没有名称匿名函数:没有名字的函数。Lambda表达式 Python中使用Lambda表达式构建匿名函数。 使用lambda关键字定义匿名函数格式为 lambda [参数列表]: 表达式参数列表不需要小括号。无参就不写参数冒号用来分割参数列表和表达式部分不需要使用return。表达式的值就是匿名函数的返回值。表达式中不能出现等号 lambda表达式(匿名函数)只能写在一行上也称为单行函数匿名函数往往用在为高阶函数传参时使用lambda表达式往往能简化代码 lambda : 0# lambda匿名函数
# 返回结果function __main__.lambda()(lambda : 0)()# 调用Lambda函数
# 返回结果0(lambda x: 100)()# 参数x没有给值
# 报错内容TypeError: lambda() missing 1 required positional argument: x(lambda x: 100)(1)# 参数x给值
# 返回结果100(lambda x: 100)(x111)# 返回结果100def a():return Noneb lambda : None # 单行函数只能写一行的函数
print(a.__name__)
print(b.__name__)# lambda是匿名函数没有名字
# 返回结果a
# 返回结果lambda(lambda x, y10: x y)(5)# lambda匿名函数加法计算
# 返回结果15(lambda x, y10: x y)(y11, x5)# lambda匿名函数加法计算
# 返回结果16(lambda x, *, y10: x y)(5, y6)# lambda匿名函数加法计算
# 返回结果11(lambda x, /, *, y10: x y)(5, y6)# lambda匿名函数加法计算
# 返回结果11f lambda x, /, *, y10: x y
print(f(5, y11))# lambda匿名函数加法计算
# 返回结果16(lambda *args: [i for i in args])(range(5)) # 因为没有解构
# 返回结果[range(0, 5)](lambda *args: [i for i in args])(*range(5))# 因为没有解构
# 返回结果[0, 1, 2, 3, 4](lambda *args: [i1 for i in args])(*range(5))# 因为没有解构
# 返回结果[1, 2, 3, 4, 5](lambda *args: list((i1 for i in args)))(*range(5))# 使用了生成器
# 返回结果[1, 2, 3, 4, 5](lambda *args: (i1 for i in args))(*range(5))# 生成了一个生成器表达式
# 返回结果generator object lambda.locals.genexpr at 0x105bb2670(lambda *args: {i%3 for i in args})(*range(5))# 返回集合i%3返回3的余数0,1,2
# 返回结果{0, 1, 2}dict(map(lambda x:(x, x1), range(5)))# 生成字典
# 返回结果{0: 1, 1: 2, 2: 3, 3: 4, 4: 5}dict(map(lambda x:(str(x), x1), range(5)))# 生成字典
# 返回结果{0: 1, 1: 2, 2: 3, 3: 4, 4: 5},.join(map(str, range(5)))# join字符串拼接
# 返回结果0,1,2,3,4{str(i):i1 for i in range(5)} # 字典解析式
# 返回结果{0: 1, 1: 2, 2: 3, 3: 4, 4: 5}# 需求我要一个字典kv对key对应的value必须是列表
d1 {k:[] for k in abcde}
print(d1)
d1[a].append(1)
print(d1)# 每次返回的结果都是全新的所以修改列表中的值没有覆盖其他
# 返回结果{a: [], b: [], c: [], d: [], e: []}
# 返回结果{a: [1], b: [], c: [], d: [], e: []}d1 dict(map(lambda x: (x, []), abcde))
print(d1)
d1[a].append(1)
print(d1)# lambda实现每次返回的结果都是全新的所以修改列表中的值没有覆盖其他
# 返回结果{a: [], b: [], c: [], d: [], e: []}
# 返回结果{a: [1], b: [], c: [], d: [], e: []}d1 dict.fromkeys(abcde, [])
print(d1)
d1[a].append(1)
print(d1)# 指向同一个列表1个边都会变
# 返回结果{a: [], b: [], c: [], d: [], e: []}
# 返回结果{a: [1], b: [1], c: [1], d: [1], e: [1]}d1 {k:[] for k in abcde}
print(d1)
d1[a].append(1)
print(d1)
d1[f] []
d1[f].append(100)
print(d1)# 字典中添加kv对
# 返回结果{a: [], b: [], c: [], d: [], e: []}
# 返回结果{a: [1], b: [], c: [], d: [], e: []}
# 返回结果{a: [1], b: [], c: [], d: [], e: [], f: [100]}from collections import defaultdictd2 defaultdict(list)
d2[t].extend(range(5)) # d2[t] KeyError,会创建 d2[t] list()
print(d2)# d2往t这个key中extend(扩展)内容时如果没有t这个key就会调用list进行创建
# 返回结果defaultdict(class list, {t: [0, 1, 2, 3, 4]})from collections import defaultdictd2 defaultdict(list)
d2[m].add(100)
print(d2)# 报错说明list对象没有add的属性
# 报错内容AttributeError: list object has no attribute addfrom collections import defaultdictd2 defaultdict(set)
d2[m].add(100)
print(d2)# 把list换成set(集合)就可以了。
# 返回结果defaultdict(class set, {m: {100}})from collections import defaultdictd2 defaultdict(list)
d2[m].append(100)
print(d2)# 返回结果defaultdict(class list, {m: [100]})from collections import defaultdictd2 defaultdict(lambda : list())
d2[m].append(100) # d2[m] (lambda :list())() list() []
print(d2)# 返回结果defaultdict(function lambda at 0x107e90f40, {m: [100]})from collections import defaultdictd2 defaultdict(lambda : {100})print(d2[m])
print(d2)# 返回结果{100}
# 返回结果defaultdict(function lambda at 0x107ac23e0, {m: {100}})字典的值比较
x [a, 1, b, 20, c, 32]
print(sorted(x, keystr)) # 比较# 返回结果[1, 20, 32, a, b, c]