匿名函数 python内置方法(max/min/filter/map/sorted/reduce)面向过程编程

1|0函数进阶三

1|11. 匿名函数

1|01. 什么是匿名函数

匿名函数就是没有名字的函数,没法调用,他只能和某些方法联合起来使用

1|02. 匿名函数的语法

lambda 参数:返回值 #也可以通过赋值,让它变为有名函数 f = lambda x,y:x+y res = f(1,2) print(res)

1|03. 能和匿名函数联用的一些方法

1|0(1)max 返回最大值

  • 使用方法:max(iterable,key = function)
salary_dict = { 'nick': 3000, 'jason': 100000, 'tank': 5000, 'sean': 2000, 'z': 1000 } def func(name): # nick/jason/tank/sean/z return salary_dict[name] # 3000/100000/5000/2000/1000 res = max(salary_dict, key=func) # 默认按key的首字母 这里是按工资排序 res = max(salary_dict, key=lambda name: salary_dict[name])
  • key=function默认做的事情 # 1. 循环遍历salary_dict,会取到所有的key值 # 2. 然后把所有的key值依次丢入function的形参中,返回薪资 # 3. 通过返回的薪资排序,得到最大值 #下面的方法中key同理

1|0(2)min 返回最小值

  • 使用方法:min(iterable,key = function)
salary_dict = { 'nick': 3000, 'jason': 100000, 'tank': 5000, 'sean': 2000, 'z': 1000 } def func(name): # nick/jason/tank/sean/z return salary_dict[name] # 3000/100000/5000/2000/1000 res = min(salary_dict, key=lambda name: salary_dict[name]) print(res)

1|0(3)fileter 返回筛选值

  • 使用方法:fileter(function,iterable)
  • 返回的是布尔值为True的item
def function(item): # 1/2/3/4 if item < 5: return True else: return False res = filter(function, [1, 2, 3, 4]) res = filter(lambda item: item > 2, [1, 2, 3, 4]) print(res) # 迭代器 print(list(res)) #例二 salary_dict = { 'nick': 3000, 'jason': 100000, 'tank': 5000, 'sean': 2000, 'z': 1000 } res = filter(lambda item: salary_dict[item] > 3000, salary_dict) print(list(res))

1|0(4)map 返回映射

  • 使用方法:map(function,iterable)
def function1(item): return item + 2 res = map(function1, [1, 2, 3, ]) print(res) # <map object at 0x00000000029C6E80> print(list(res)) # [3, 4, 5]

1|0(5)sorted 排序并生成一个新的列表

  • 使用方法:sorted(iterable,key = function,reverse = ?)
  • 实例
def function2(item): return salary_dict[item] salary_dict = { 'nick': 3000, 'jason': 100000, 'tank': 5000, 'sean': 2000, 'z': 1000 } # res = sorted([2,3,4,1,0,5],key=lambda k:k,reverse=True) res = sorted(salary_dict, key=function2, reverse=True) # 按照value的从大到小排序生成key列表 print(res) # sorted 返回的就是一个列表类型,不是像上面的方法一样返回一个迭代器 # print(list(res)) # 这里不用在强制类型转换了

1|0(6)reduce 累积

  • reduce() 函数会对参数序列中元素进行累积, 返回函数计算结果。

  • 函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

  • reduce(function, iterable, [initializer])

  • function -- 函数,有两个参数

  • iterable -- 可迭代对象

  • initializer -- 可选,初始参数,不写默认是0,写了会先把这个数和容器类型的第一个元素运算,得到的结果再与第二个元素运算。

  • >>>def add(x, y) : # 两数相加 ... return x + y ... >>> reduce(add, [1,2,3,4,5]) # 计算列表和:1+2+3+4+5 15 >>> reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数 15 res1 = reduce(lambda x,y:x+y,[1,2,3,4],100) print(res1) # 110 res2 = reduce(lambda x,y:x+y,[1]) print(res2) # 1

1|22. python解释器内置方法

方法名 使用方法 实例
bytes 转化为二进制码 res = bytes('中国', encoding='utf8') # b'\xe4\xb8\xad\xe5\x9b\xbd'
chr/ord 将字母数字互转 print(chr(97))print(ord('a')) # a 97
divmod 取整和取余 print(divmod(10, 4)) # (2,2)
enumerate 同时取索引和值 lt = [1, 2, 3] for ind, val in enumerate(lt): print(ind, val)
eval 把字符串的引号去掉,留下来的是什么就是什么 s = '"abc"'print(type(eval(s)), eval(s)) #<class 'str'> abc
hash 求哈希值 print(hash(123123)) #123123
abs 绝对值 print(abs(-1)) # 1
all 可迭代对象内的元素全部为True则为True print(all([1, 2, 3, 3])) #True
any 可迭代对象内的元素有一个为True则为True print(any([0, 1, ])) #True
bin/oct/hex 10进制转化为2/8/16进制 print(bin(123)) # 0b1111011
dir 列出模块(库)的所有方法 import time print(dir(time))
frozenset 不可变化的集合,类似于元组 s = frozenset({1,2,3}) #frozenset({1,2,3})
globals/locals 列出所有全局变量/列出所有当前位置的变量 print(globals()) / print(locals())
pow print(pow(3,2)) # 9
slice 切片 s = slice(1, 5, 2) lt = [1, 2, 3, 4, 5, 6, 7] print(lt[s])
sum 求和sum(iterable) sum([1,2,3]) # 6
__import__ 通过字符串导入模块 time = __import__('time')
  • 其他进制转十进制:
    int('进制数',n) # n表示前面的是几进制

1|33. 异常处理

  • 语法:

    try: code1 except Exception as e: print(e) #可加可不加 code2 finally: # 可加可不加 code3
  • 异常处理就是当程序报了错,进行处理

  • 报错之后,不执行下面的代码

  • 异常捕捉只能捕捉逻辑错误

  • finally 方法的作用是无论你报不报错,都执行其缩进下的代码

    dic = {'a': 1} try: print(dic['b']) # KeyError 1 / int(num) # 报错之后,不运行下面的代码 except Exception as e: # 万能异常,只要有错误,就捕捉 print(e) # e存储的是错误的内容,而不是错误的类型 print('傻逼,不知道什么错误') finally: print('asdasf')
  • assert +条件 ( 断言 +条件) 现在这种方法已经被淘汰

    条件成立不报错,不成立报错

    num = input('num:') assert 1 == int(num)
  • raise 主动报错误 (就是主动报错,没什么用处)

    x = 1 raise(x = 1) # 报错

2|0面向过程编程

  • 面条版 --》 面向过程编程 --》 思想 --》面向对象编程

  • 面向(代词--》使用) 过程(流程--》步骤) 编程(写代码,写文件)

  • IPO编程

    I input 输入(定义的变量) P Process 过程(控制变量的改变) O output(新的变量) 输出编程 == 面向过程编程

  • 面向过程编程:类似于流水线,一步一步往下走

  • 一个步骤就是一个函数

  • 面向过程编程

    优点:逻辑非常清晰

    缺点:上一步错了,下一步就跟着一起错


__EOF__

本文作者BigSun丶
本文链接https://www.cnblogs.com/Mcoming/p/11585111.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   BigSun丶  阅读(233)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示