本文共 2301 字,大约阅读时间需要 7 分钟。
lambda函数是Python编程中的一个强大工具,适合在需要简洁定义函数时使用。它的名字统一为<lambda>,但你可以根据实际需求为其命名。
使用场景: lambda函数通常与sorted、map、filter等函数搭配使用,实现灵活的数据处理需求。
示例:
# 定义一个简单的函数fn = lambda a, b: a + bret = fn(3, 5) # 返回8print(ret) # 输出8print(fn) # 输出at 0x...>print(fn(4, 6)) # 返回10
sorted函数允许你定义自己的排序规则,通过传递key函数来实现。
执行流程:
示例:
# 示例1:默认排序lst = [11, 5, 36, 1, 27, 58]s = sorted(lst)print(s) # 输出:[1, 5, 11, 27, 36, 58]# 示例2:按字符串长度排序lst = ["胡一菲", "张伟", "关谷神奇", "曾小贤吕小布", "诺澜"]def func(s): return len(s)s = sorted(lst, key=func)print(s) # 输出:['诺澜', '胡一菲', '张伟', '关谷神奇', '曾小贤吕小布']
filter函数用于对可迭代对象进行过滤操作,保留符合条件的项。
使用方法:
示例:
# 过滤掉姓张的人lst = ["张无忌", "张翠山", "范冰冰", "金毛狮王", "李冰冰"]f = filter(lambda name: not name.startswith("张"), lst)print("__iter__" in dir(f)) # 输出:Truefor el in f: print(el) # 输出:['范冰冰', '金毛狮王', '李冰冰'] map函数用于将一个函数应用到可迭代对象的每个元素上,返回新的迭代对象。
使用场景: 适合对集合中的元素进行一一变换,常用于数据处理和转换。
示例:
# 示例1:添加固定前缀lst = ["篮球球", "打打台球", "唱歌", "爬慌山", "步"]m = map(lambda s: "爱好:" + s, lst)print(list(m)) # 输出:['爱好:篮球球', '爱好:打打台球', '爱好:唱歌', '爱好:爬慌山', '爱好:步']# 示例2:计算平方lst = [1, 5, 78, 12, 16]m = map(lambda i: i ** 2, lst)print(list(m)) # 输出:[1, 25, 6084, 144, 256]
eval函数将字符串类型的代码解析并执行,返回结果。
注意事项:
示例:
# 示例1:执行算术表达式s = "18 + 2"ret = eval(s)print(ret) # 输出:20# 示例2:解析JSON字符串s = "{'name':'alex', 'age':18, 'isMan':False}"ret = eval(s)print(ret) # 输出:{'name': 'alex', 'age': 18, 'isMan': False}print(type(ret)) # 输出: exec函数用于执行预先编译好的代码字符串,不能用于非常长的代码。
注意事项:
示例:
# 预编译代码code = '''for i in range(10): if i % 2 == 0: print(i)'''c = compile(code, "", "exec")exec(c) # 输出:0 2 4 6 8
compile函数用于将代码字符串预先编译为可执行代码,便于多次执行。
使用场景:
示例:
# 预编译代码code = '''for i in range(10): if i % 2 == 0: print(i)'''c = compile(code, "", "exec")exec(c) # 输出:0 2 4 6 8
以上函数在实际编程中可以灵活组合使用,帮助开发者实现复杂的数据处理任务。通过合理运用lambda、sorted、filter、map、eval、exec和compile等函数,可以提升代码的可读性和效率。
转载地址:http://vaefk.baihongyu.com/