zoukankan      html  css  js  c++  java
  • Python lambda

    Python关于lambda表达式的小知识点

    本篇内容 没有 对于lambda表达式的 全部介绍,只涉及基础了理解,和浅显的实例。

    一 基本的介绍

    def f(x):
        return x*x
    
    f = lambda x: x*x
    
    print(f(5))

    上述两个代码的效果是相同的。

    f 是函数的名字,lambda标志着 f 是一个 函数,冒号左边是输入量,右边是输出量。

    如果遇到两个变量,例如 x 和 y ,那么:

    def f(x):
        return x * y
    
    f = lambda x,y:x*y
    
    print(f(4,5))

    输出是9。

    二 对于排序很方便

    lambda 对于排序很方便。

    例如,你有个csv文件,名字叫做" countries.csv ":

    http://www.wikidata.org/entity/Q114,肯尼亚,非洲,奈洛比,44353691
    http://www.wikidata.org/entity/Q115,埃塞俄比亚,非洲,亚的斯亚贝巴,96958732
    http://www.wikidata.org/entity/Q117,迦納,非洲,阿克拉,28308301
    http://www.wikidata.org/entity/Q142,法国,欧洲,巴黎,66628000
    http://www.wikidata.org/entity/Q145,英国,欧洲,倫敦,65102385
    http://www.wikidata.org/entity/Q148,中华人民共和国,亚洲,北京市,1409517397
    http://www.wikidata.org/entity/Q155,巴西,南美洲,巴西利亚,200361925
    http://www.wikidata.org/entity/Q159,俄罗斯,欧洲,莫斯科,146804372
    http://www.wikidata.org/entity/Q16,加拿大,北美洲,渥太華,35702707
    http://www.wikidata.org/entity/Q17,日本,亚洲,東京都,127110047

    然后使用lambda对它进行处理,首先读取文件,将文件中的内容存入变量countires:

    """
    开始读取文件
    """
    countries = [] # 新建一个空的list,为了存储
    file = open("countries.csv", "r")
    for line in file:
        line = line.strip() # 将前后多余空格给删掉
        arr = line.split(",") # 根据逗号,将内容区分开
        name = arr[1] # 提取国家
        capt = arr[3] # 提取首都
        popu = int(arr[4]) # 提取人口数量,不要忘记转int型
        countries.append((name, capt, popu))
    
    """
    文件已经成功读取
    """

    可以打印出来,看看效果:

    for country in countries:
        print(country)

    结果应该是根据原文件的顺序来打印的。

    如果想要顺序打印,可以在打印之前,加入" countries.sort() ",这是python自带的函数。

    如果根据你自己的喜好进行排序,可以使用使用 " countries.sort(key =____) ",其中____是你自定义的函数,根据return排序。

    所以,你可以这样定义____:

    def get_popu(country):
        return country[2]

    总结一下,就是:

    """
    文件读取完毕
    """
    def get_popu(country):
            return country[2] # 选取人口
    
    countries.sort(key=get_popu)
    
    """
    开始打印
    """

    不过,根据刚才学的,你可以这么写,舒服多了:

    countries.sort(key=lambda country:country[2])

    三 复合函数

    如果有一个 f(x) = ax2+bx+c ,如果设计函数,那么f(a,b,c,x),这个看着很费力,要简化。

    第一种可能:

    def foo(a, b, c):
        return lambda x: a*x*x + b*x + c
    
    f = foo(1,-1,2)
    
    print(f(5))
    
    # output: 22

    如果再一次简化:

    def foo(a, b, c):
        return lambda x: a*x*x + b*x + c
    
    print( foo(1,-1,2)(5) )
    
    
    # output: 22

    以上内容是对如下视频整理,没有进行严格编译,此博文仅作记录:up主:正月点灯笼

  • 相关阅读:
    iframe
    服务器 开发机 linux docker
    git
    iframe because an ancestor violates the following Content Security Policy directive: "frameancestors 'self'
    @babel/pluginproposaloptionalchaining
    jest
    富文本编辑器
    thymeleaf+layui渲染错误
    springboot静态资源访问
    layui的树型组件的使用
  • 原文地址:https://www.cnblogs.com/kykai/p/11410051.html
Copyright © 2011-2022 走看看