博客
关于我
15 Python之内置函数
阅读量:800 次
发布时间:2023-04-02

本文共 2301 字,大约阅读时间需要 7 分钟。

Python编程中的高级函数应用

1. lambda函数:匿名函数的灵魂

lambda函数是Python编程中的一个强大工具,适合在需要简洁定义函数时使用。它的名字统一为<lambda>,但你可以根据实际需求为其命名。

使用场景: lambda函数通常与sortedmapfilter等函数搭配使用,实现灵活的数据处理需求。

示例:

# 定义一个简单的函数
fn = lambda a, b: a + b
ret = fn(3, 5) # 返回8
print(ret) # 输出8
print(fn) # 输出
at 0x...>
print(fn(4, 6)) # 返回10

2. sorted函数:自定义排序规则

sorted函数允许你定义自己的排序规则,通过传递key函数来实现。

执行流程:

  • 将可迭代对象中的每一项提取出来。
  • 将提取出的项作为参数传递给key函数。
  • 根据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) # 输出:['诺澜', '胡一菲', '张伟', '关谷神奇', '曾小贤吕小布']

    3. filter函数:过滤操作

    filter函数用于对可迭代对象进行过滤操作,保留符合条件的项。

    使用方法:

  • 将可迭代对象逐一打开。
  • 将每个元素传递给前置函数。
  • 根据函数返回的布尔值决定是否保留该元素。
  • 示例:

    # 过滤掉姓张的人
    lst = ["张无忌", "张翠山", "范冰冰", "金毛狮王", "李冰冰"]
    f = filter(lambda name: not name.startswith("张"), lst)
    print("__iter__" in dir(f)) # 输出:True
    for el in f:
    print(el) # 输出:['范冰冰', '金毛狮王', '李冰冰']

    4. map函数:映射操作

    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]

    5. eval函数:执行字符串代码

    eval函数将字符串类型的代码解析并执行,返回结果。

    注意事项:

    • eval函数执行的代码可能带来安全风险,需谨慎使用。
    • 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)) # 输出:

    6. exec函数:执行预编译代码

    exec函数用于执行预先编译好的代码字符串,不能用于非常长的代码。

    注意事项:

    • exec函数没有返回值,想要获取结果需使用eval函数。
    • exec函数适用于快速执行预编译好的代码片段。

    示例:

    # 预编译代码
    code = '''for i in range(10):
    if i % 2 == 0:
    print(i)'''
    c = compile(code, "", "exec")
    exec(c) # 输出:0 2 4 6 8

    7. compile函数:代码预编译

    compile函数用于将代码字符串预先编译为可执行代码,便于多次执行。

    使用场景:

    • 在需要频繁执行相同代码段时,预编译可以提高性能。
    • 适用于编程竞赛等场景。

    示例:

    # 预编译代码
    code = '''for i in range(10):
    if i % 2 == 0:
    print(i)'''
    c = compile(code, "", "exec")
    exec(c) # 输出:0 2 4 6 8

    8. 代码实践总结

    以上函数在实际编程中可以灵活组合使用,帮助开发者实现复杂的数据处理任务。通过合理运用lambda、sorted、filter、map、eval、exec和compile等函数,可以提升代码的可读性和效率。

    转载地址:http://vaefk.baihongyu.com/

    你可能感兴趣的文章
    Oracle EBS-SQL (BOM-15):检查多层BOM(含common BOM).sql
    查看>>
    Oracle EBS环境下查找数据源(OAF篇)
    查看>>
    oracle Extract 函数
    查看>>
    Oracle GoldenGate Director安装和配置(无图)
    查看>>
    oracle ogg 单实例双向复制搭建(oracle-oracle)--Oracle GoldenGate
    查看>>
    oracle scott趣事
    查看>>
    oracle script
    查看>>
    Oracle select表要带双引号的原因
    查看>>
    Oracle SOA Suit Adapter
    查看>>
    Oracle Spatial GeoRaster 金字塔栅格存储
    查看>>
    Oracle Spatial空间数据库建立
    查看>>
    UML— 活动图
    查看>>
    Oracle Statspack分析报告详解(一)
    查看>>
    oracle tirger_在Oracle中,临时表和全局临时表有什么区别?
    查看>>
    oracle where 条件的执行顺序分析1
    查看>>
    oracle 使用leading, use_nl, rownum调优
    查看>>
    oracle 修改字段类型方法
    查看>>
    oracle 内存参数示意图
    查看>>
    Oracle 写存储过程的一个模板还有一些基本的知识点
    查看>>
    Oracle 创建 DBLink 的方法
    查看>>