ICode9

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

Python函数基础(四)

2021-09-17 20:34:13  阅读:266  来源: 互联网

标签:f1 函数 Python list1 基础 print 表达式 lambda


文章目录(PS:觉得不错请点赞收藏支持一下)

一、lambda 表达式

  1. 语法
lambda 参数列表: 表达式
  1. 举例
  • 普通
"""
1. 使用 lambda 表达式定义了一个函数
2. 使用 lambda 表达式定义的函数没有名字(匿名函数)
3. 冒号后面是函数的返回值,不要使用 return 进行返回
"""
f2 = lambda : 100
res = f2()
print(res)  # 100

"""
注意
> lambda 表达式的参数可有可无,函数的参数在 lambda 表达式中完全适用
> lambda 表达式能接收任何数量的参数但只能返回一个表达式的值
"""
  • 求和
"""
在 lambda 关键字和冒号之间是函数的参数(可以是多个参数)
"""
f4 = lambda a: a + 100
res = f4(100)
print(res)  # 200

f6 = lambda a,b: a + b
res = f6(10,20)
print(res) # 30
  1. 参数
# 可变参数
f1 = lambda *args: sum(args)
print(f1(1,2,3,4,5))  # 15

f2 = lambda **kwargs: kwargs
print(f2(name='张三',age=20))  #{'name': '张三', 'age': 20}
  1. 进阶练习
# 判断大小
compare = lambda a,b: a if a > b else b
print(compare(10,66)) # 66

# 按照人的年龄进行排序
students = [{'name': 'TOM', 'age': 20}, {'name': 'ROSE', 'age': 19}, {'name':'Jack', 'age': 22}]
students.sort(key= lambda age: age['age'])
print(students)
# 运行结果:
# [{'name': 'ROSE', 'age': 19}, {'name': 'TOM', 'age': 20}, {'name': 'Jack', 'age': 22}]'
  1. 总结
lambda 表达式的认识
1. lambda 表达式的函数是匿名函数
2. lambda 表达式是为了简化函数的定义
3. lambda 表达式冒号后面只能有一行代码,原因是冒号后面的代码就是普通函数 return 后面内容

lambda 表达式与普通函数的对比
1. lambda 方式不用为函数起名字
2. lambda 方式一行代码搞定
3. 对于只使用 1 次的函数,没必要单独定义,使用 lambda 方式非常快捷

二、高阶函数

解释说明:如果一个函数的参数是函数,此函数就叫做高阶函数。

  1. 只定义一个函数,就可以都执行加减乘除运算
def do_everything(a,b,fn):
    return fn(a,b)
print(do_everything(10,5,lambda n1,n2: n1 + n2)) # 15
print(do_everything(10,5,lambda n1,n2: n1 - n2)) # 5
print(do_everything(10,5,lambda n1,n2: n1 * n2)) # 50
print(do_everything(10,5,lambda n1,n2: n1 / n2)) # 2.0

三、任务清单

  1. 写函数,接收n个数字,返回所有参数的和(使用 lambda 表达式改写函数)
f1 =lambda *args: sum(args)
print(f1(10,20,30))  # 60
  1. 定义一个函数,接受一个列表作为参数,找到这个列表中下标为奇数对应的元素,放到一个新列表中,并将其作为返回值返回(使用 lambda 表达式改写函数)
f1 = lambda list1: [list1[i] for i in range(len(list1)) if i % 2 != 0]
print(f1(['张三','法外狂徒','小明','老王',True,666])) # ['法外狂徒', '老王', 666]
  1. 写一个函数,参数为一个列表,返回列表中的前两个元素(放到一个新列表中即可)(使用 lambda 表达式改写函数)
f1 = lambda list1: list1[:2] if len(list1) > 2 else list1
print(f1(['张三','法外狂徒','小明','老王',True,666])) # ['张三', '法外狂徒']
  1. 写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组。例如:[(‘红心’,2), (‘草花’,2), …(‘黑桃,‘A’)]。
f1 = lambda list1,list2:[(x,y) for x in list1 for y in list2]
print(f1(['红心','草花','方块','黑桃'],[2,3,4,5,6,7,8,9,10,'J','Q','K','A']))
  1. 写函数,传入n个数,返回字典:{‘max’:最大值,’min’:最小值}。例如: min_max(2, 5, 7, 8, 4),返回: {‘max’:8,’min’:2}。
f1 = lambda *args: {'max':max(args),'min':min(args)}
print(f1(2, 5, 7, 8, 4)) # {'max': 8, 'min': 2}
  1. 写函数,专门计算图形的面积。其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积(高阶函数练习)。
def result(x,y,fn):
    return fn(x,y)
print(result(2,5,lambda x,y: x * y ** 2))   # 圆的面积
print(result(2,5,lambda x,y: x ** 2))   # 正方形的面积
print(result(2,5,lambda x,y: x * y))   # 长方形的面积
  1. 生成20个斐波那契数列:[1,1,2,3,5,8,13,…],每个元素为前两个元素之和。
fib = lambda n: n if n < 2 else fib(n - 1) + fib(n - 2)
listData = [fib(i) for i in range(1,21)]
print(listData)
  1. 已知有个列表[1,2,3,4,5],让列表的每个元素加1,把结果不能被2整除的元素筛选出来。
f1 = lambda list1: [i for i in list1 if (i+1) % 2 != 0]
print(f1([1,2,3,4,5]))  # [2, 4]

在这里插入图片描述

标签:f1,函数,Python,list1,基础,print,表达式,lambda
来源: https://blog.csdn.net/m0_58040147/article/details/120356184

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

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

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

ICode9版权所有