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,c): return lambda x: a*x*x + b*x + c f = foo(1,-1,2) print(f(5)) # output: 22 如果再一次简化: def foo(a,c): return lambda x: a*x*x + b*x + c print( foo(1,2)(5) ) # output: 22 ? 以上内容是对如下视频整理,没有进行严格编译,此博文仅作记录:up主:正月点灯笼 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |