来自 美高梅4858官方网站 2019-10-23 09:23 的文章
当前位置: 美高梅4858官方网站 > 美高梅4858官方网站 > 正文

python中lambda函数使用用法,使用匿名函数对1

Python 练习

标签: Python Python练习题 Python知识点


lambda只是一个表明式,函数体比def轻易超多。

蒸蒸日上.利用佚名函数对1~1000求和,代码力求简明扼要。

答案:

In [1]: from functools import reduce

In [2]: print(reduce(lambda x, y: x + y, range(1, 1001)))
Out[2]: 500500

lambda的着入眼是八个表明式,实际不是多个代码块。仅仅能在lambda表明式中封装有限的逻辑进去。

知识点

lambda表达式是起到二个函数速写的效劳。允许在代码内放置二个函数的概念。

1. 佚名函数:lambda 参数:表达式

lambda语句中,初步先写关键字lambda,冒号前是参数,可以有多个,用逗号隔绝;冒号侧边的为表达式,要求留意的是只可以有二个表明式。由于lambda再次回到的是函数对象(营造的是贰个函数对象),所以必要定义三个变量去选择。

咱俩先来看八个事例爬山涉水

2. 高阶函数爬山涉水把函数作为贰个参数传入到另二个函数中

def add(x, y): return x + y

1> map()

python内置的三个高阶函数,它接收七个参数,八个是函数,一个是 Iterable(可遍历对象,如列表),map将盛传的函数依次功效到行列的每种成分,并把结果作为新的 Iterator(迭代器)再次回到。
粗略代码例如爬山涉水求f(x)=x*x

In [8]: def f1(x):
   ...:     return x * x 
   ...: list1 = range (1, 6)
   ...: print(list(map(f1, list1)))
   ...: 
[1, 4, 9, 16, 25]

我们定义了三个函数叫add,有多个参数,再次来到结果是x+y

2> reduce()

reduce把一个函数功效在一个队列[x1, x2, x3, ...]上,这么些函数必得选取五个参数,reduce把结果三番五次和体系的下二个成分做积累总计,其职能正是跋山涉水的近义词reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
简单的讲代码举个例子:对1~1000求和

In [1]: from functools import reduce

In [2]: print(reduce(lambda x, y: x + y, range(1, 1001)))
Out[2]: 500500

def usuallyAdd2(x, y=2): return x+y

3> filter()

Python内建的filter()函数用于过滤连串。和map()相似,filter()也选择二个函数和七个行列。和map()不一样的是,filter()把传播的函数依次成效于各类成分,然后依据再次来到值是True依旧False决定封存照旧废弃该因素。
轻便代码比方跋山涉水的近义词过滤掉列表中的基数

In [12]: list(filter(lambda x:x%2==0, range(1,9)))
Out[12]: [2, 4, 6, 8]

其朝气蓬勃usuallyAdd2的差别在于y有了暗中认可值

4> sorted()

对具有可迭代的指标开展排序操作,再次来到重新排序的列表。

sort 与 sorted 区别:
美高梅4858官方网站,sort 是利用在 list 上的秘技,sorted 能够对富有可迭代的靶子举行排序操作。
list 的 sort 方法再次回到的是对已经存在的列表实行操作,而内建函数 sorted方法重回的是一个新的 list,并不是在本来的功底上张开的操作。

语法:sorted(iterable[, cmp[, key[, reverse]]])

参数表达爬山涉水
iterable -- 可迭代对象。
cmp -- 比较的函数,那几个富有三个参数,参数的值都以从可迭代对象中收取,此函数必需固守的家有家规为,大于则赶回1,小于则赶回-1,等于则再次来到0。
key -- 首即便用来扩充相比的成分,独有三个参数,具体的函数的参数正是取自于可迭代对象中,钦定可迭代对象中的四个要一直开展排序。
reverse -- 排序准绳,reverse = True 降序 , reverse = False 升序(默许)。
粗略代码比如爬山涉水

In [14]: a = [5, 9, 2, 3, 4, 7, 1]

In [15]: b = sorted(a)      # 保留原列表

In [16]: a
Out[16]: [5, 9, 2, 3, 4, 7, 1]

In [18]: b
Out[18]: [1, 2, 3, 4, 5, 7, 9]

In [19]: L=[('b',2),('a',1),('c',3),('d',4)]

In [20]: sorted(L, cmp=lambda x, y:cmp(x[1], y[1]))   # 利用cmp函数
Out[20]: [('a', 1), ('b', 2), ('c', 3), ('d', 4)]

In [21]: sorted(L, key=lambda x:x[1])   #  利用key
Out[21]: [('a', 1), ('b', 2), ('c', 3), ('d', 4)]

In [22]: students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
In [23]: sorted(students, key=lambda s: s[2])   # 按年龄排序
Out[23]: [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

In [24]: sorted(students, key=lambda s: s[2], reverse=True)       # 按降序
Out[24]: [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

如火如荼经采纳lambda怎样展现呢?

3. 列表(数组)生成式 ,range与xrange

lambda x, y: x + y

1> range

range([start,] stop[, step]),依据start与stop钦赐的界定以致step设定的小幅度,生成二个种类。

比如:

In [1]: range(5)
Out[1]: [0, 1, 2, 3, 4]

In [2]: range(1,5)
Out[2]: [1, 2, 3, 4]

In [3]: range(0,6,2)
Out[3]: [0, 2, 4]

lambda x, y=2: x+y

2> xrange

xrange 用法与 range 完全相符,所差异的是变化的不是一个list对象,而是多少个生成器。
比如:

In [1]: xrange(5)
Out[1]: xrange(5)

In [2]: list(xrange(5))
Out[2]: [0, 1, 2, 3, 4]

In [3]: xrange(1,5)
Out[3]: xrange(1, 5)

In [4]: list(xrange(1,5))
Out[4]: [1, 2, 3, 4]

In [5]: xrange(0,6,2)
Out[5]: xrange(0, 6, 2)

In [6]: list(xrange(0,6,2))
Out[6]: [0, 2, 4]
  • 由地点的身体力行可以看到爬山涉水要生成十分的大的数字连串的时候,用xrange会比range质量优非常多,因为无需如日方升上来就开拓一块超大的内部存款和储蓄器空间。
  • xrange 和 range 那七个基本上都以在循环的时候用。

PS: 部分知识点计算参照他事他说加以考察自菜鸟教程网及廖雪峰的官网。

看一下测量试验结果爬山涉水

>>> test = lambda x,y=2:x+y
>>> test(3
... )
5
>>> test(5)
7
>>> test(1)
3
>>>

事实上lambda就是把参数和再次回到简写,极度常有利

本文由美高梅4858官方网站发布于美高梅4858官方网站,转载请注明出处:python中lambda函数使用用法,使用匿名函数对1

关键词: