python——匿名函数(lambda)及其参数(默认参数,可变参数,关键字参数)

版权声明:©2004 Microsoft Corporation. All rights reserved. https://blog.csdn.net/qq_42036824/article/details/86567628

匿名函数:

  • 匿名函数的关键字为lambda,冒号前面是行参 冒号后面是返回值

题目1:求1+2+3+4+5

  • 正常方法:
from functools import reduce
def add(x,y):
    return x + y

print(reduce(add,range(6)))
结果:
15
  • 使用匿名函数(lambda)
from functools import reduce
print(reduce(lambda x,y:x+y,range(6)))

结果:
15

题目2:

  • 将列表[0,1,2,3,4]的每个元素都平方然后输出
print(list(map(lambda x:pow(x,2),range(5))))  ##注意map输出要转换成列表,否则为对象
结果:
[0, 1, 4, 9, 16]

题目3:求10的阶乘

from functools import reduce
print(reduce(lambda x,y:x*y,range(1,11)))

结果:
3628800

匿名函数的默认参数

#匿名函数的默认参数
f = lambda x,y=2:x**y
print(f(3))
print(f(2,4))  ##如果传值则默认参数值不生效

结果:
9    ##32次方
16   ##24次方

匿名函数的可变参数: *args(可接收多个值)

f = lambda *args:sum(args)
print(f(1,2,3,45,6))

结果:
57   ##值相加

匿名函数的关键字参数:参数为字典

f = lambda **kwargs:kwargs.values()
print(f(name='fentiao',age=10))

结果:
dict_values(['fentiao', 10])

匿名函数的练习:

  • 将下面列表中的0放在最后,其他非0数字保持顺序不变
  • nums = [0, 7, 0, 1, 2, 1, 5, 1, 7, 8, 0, 67, 1, 3, 4]
nums = [0, 7, 0, 1, 2, 1, 5, 1, 7, 8, 0, 67, 1, 3, 4]
print(sorted(nums,key=lambda x:1 if x == 0 else 0))

结果:
[7, 1, 2, 1, 5, 1, 7, 8, 67, 1, 3, 4, 0, 0, 0]

猜你喜欢

转载自blog.csdn.net/qq_42036824/article/details/86567628