ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python lambda

2019-08-25 23:51:44  阅读:292  来源: 互联网

标签:www http Python entity wikidata org 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主:正月点灯笼

标签:www,http,Python,entity,wikidata,org,lambda
来源: https://www.cnblogs.com/kykai/p/11410051.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有