zoukankan      html  css  js  c++  java
  • 匿名函数、列表推导式和生成器表达式

    匿名函数:为了解决那些功能很简单的需求而设计的一句话函数。

    函数名 = lambda 参数 :返回值
    
    #参数可以有多个,用逗号隔开
    #匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
    #返回值和正常的函数一样可以是任意数据类型
    def fun(a,b):
        print(a+b)
    
    l =lambda a,b:a+b
    print(l(1,2))
    # 3

    我们可以看出,匿名函数并不是真的不能有名字。

    匿名函数的调用和正常的调用也没有什么分别。 就是 函数名(参数) 就可以了

     1 dic = {'a1':111,'a2':555,'a3':222}
     2 print(max(dic,key=lambda k:dic[k]))
     3 # a2
     4 r = map(lambda a:a**2,[1,2,36])
     5 # print(r)
     6 # <map object at 0x00000000010C4438>
     7 for i in r:
     8     print(i)
     9 # 1
    10 # 4
    11 # 1296
    12 
    13 r = [2,6,6,9,77]
    14 f = filter(lambda a:a>10,[2,6,6,9,77])
    15 print(f)
    16 # <filter object at 0x0000000000704400>
    17 for i in f:
    18     print(i)
    19 # 77
    View Code

    列表推导式和生成器表达式

    1.把列表解析的[]换成()得到的就是生成器表达式

    2.列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存 

    3.Python不但使用迭代器协议,让for循环变得更加通用。大部分内置函数,也是使用迭代器协议访问对象的。例如, sum函数是Python的内置函数,该函数使用迭代器协议访问对象,而生成器实现了迭代器协议

    l = [i for i in range(2,10)]
    print(l)
    # [2, 3, 4, 5, 6, 7, 8, 9]
    l = (i for i in range(2,10))
    print(l)
    # <generator object <genexpr> at 0x0000000000B9C678>
    print(list(l))
    # [2, 3, 4, 5, 6, 7, 8, 9]
    View Code
  • 相关阅读:
    机器学习中的正则化问题(2)——理解正则化
    详解 Python 中的下划线命名规则
    编程面试的算法概念汇总
    group by多字段查询解决礼物统计
    一分钟学会Spring Boot多环境配置切换
    Maven 多模块父子工程 (含Spring Boot示例)
    第1章 Spring Cloud 构建微服务架构(一)服务注册与发现
    第3章 Spring Boot 入门指南
    第5章 Spring Boot 功能
    第4章 CentOS软件安装
  • 原文地址:https://www.cnblogs.com/zhaojingyu/p/8955834.html
Copyright © 2011-2022 走看看