内置函数

  1. all(iteralble) 如果可迭代对象内的所有元素的bool值为真,那么返回真,如果这个可迭代对象是空,也返回真。
all([1,2,3,4])  # return True
all([])         # return True
all([None, 1, 'a']) # return False
  1. any(iterable)all(iteralble) 类似,只是只要有一个元素为真,那么就是真
  2. bytes(obj) 将一个对象转为字节
bytes('abc',encoding='utf-8')   # b'abc'
bb = bytes([1,2,3,4])   # b'\x01\x02\x03\x04'
  1. callable(obj) 对象是否可调用,返回True/False 注意,所有的类都是可调用的,因为类的实例都有一个__call__() 方法
  2. chr(i) 数字转字符;ord(c) 字符转编码
  3. dir(obj) 查看对象的所有属性/方法
  4. help(obj) 查看帮助文档
  5. divmod(x, y) return the tuple (x//y, x%y) 商和余。例如,计算网页需要分多少页显示:
def count(x, y):res = divmod(x, y)if res[1] > 0:return res[0]+1return res[0]
# 假设有200条评论,每页显示50,需要多少页
print(count(200, 50)) # 结果 5
  1. enumerate(iterable obj) 迭代取值,返回元组(索引,元素)组成的新的可迭代对象(可以用for i in 或 list 来取值)。如果对象类型是dict,元组形式就是(索引,key)
list(enumerate(['a','b','c']))  # [(0, 'a'), (1, 'b'), (2, 'c')]
list(enumerate({'name': 'Seb', 'age': 22, 'sex': 'male'}))   # [(0, 'name'), (1, 'age'), (2, 'sex')]
  1. frozenset() 创建一个不可变的集合
  2. isinstance(obj, class) 判断对象的类型,返回True/False
  3. pow(x, y, z) 对x进行y的幂运算然后除z取余:x**y%z
  4. reversed() 反转,返回一个可迭代对象list(reversed('abc')) # ['c', 'b', 'a']
  5. round(float, 保留的小数位) round(9.2356, 3) # 9.236
  6. slice(x, y, z) 创建一个切片对象
x = slice(0,5,2)    # 创建一个切片对象x
l = [1,2,3,4,5,6]
print(l[x])     # [1, 3, 5]
  1. sorted(iterable, reverse=False) 排序返回一个列表
print(sorted('baefc')) # ['a', 'b', 'c', 'e', 'f']
print(sorted('baefc', reverse=True))    # ['f', 'e', 'c', 'b', 'a']
  1. zip(序列1, 序列2) 拉链函数,返回一个zip obj(迭代器,可通过list或for i in 取值),左边序列的的元素对应右边序列的唯一元素,结合为元组。
s = 'abcde'
l = [1,2,3,4,5,6,]
print(list(zip(s, l)))  # [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]

匿名函数lambda

基本形式:

lambda: args : expression ,表达式的结果就是函数的return value

func = lambda x:x*2
func(2)     # 也可以这样来调用
lambda x : x < 3 # 返回True/False

why lambda?

定义一个有名函数时def func():pass,只要名字不被删除,就一直占着内存。如果只用一次,用完了还要del func。 但是lambda匿名函数,只是一个内存地址,没有绑定变量名,会被回收。另外,简单的函数用lambda写更方便。

lambda和内置函数map, reduce, filter,max的应用

map 映射:map(函数, 序列)

map迭代序列,将元素传给函数,将函数返回的结果组成map obj这个迭代器,可以用list或for循环来查看。

m = map(lambda x : x*2, [1, 2, 3, 4])
print(list(m))  # [2, 4, 6, 8]

reduce 合并:reduce(函数,序列,初始值)

在python3中使用reduce函数需要 from functools import reduce 导入。

from functools import reduce
print(reduce(lambda x,y :  x+y, range(100))) # reduce循环序列的元素,让函数每次接收两个元素,
# 返回的结果再和序列的下一个元素作累积计算

filter 过滤:filter(函数,序列)

循环序列的元素,让函数判定元素的bool值,如果为真,返回元素组成的filter obj 迭代器对象。

print(list(filter(lambda x : x > 0, [-3, -5, 2, 1])))   # [2, 1]

max

用max函数找出一个字典中的最大值。

# 找出分数最高的那位同学
d = {'Ayhan': 100, 'Seb': 98, 'Tom': 97, 'Ronin': 98}
res = zip(d.values(), d.keys()) # max() 遵循迭代器协议,如果传入的字典,那么比较key的大小。所以用zip处理一下。
print(max(res))  # (100, 'Ayhan')

max(dict, key=func) max函数中的key可以指定比较的对象。循环字典得到key,把字典key传给key的函数处理后得到的返回值,再作比较。注意,max的key和字典的key不同。上面的栗子可以改写:

d = {'Ayhan': 100, 'Seb': 98, 'Tom': 97, 'Ronin': 98}
print(max(d, key = lambda x : d[x]))    # Ayhan

迭代器协议

很多内置函数都是遵循迭代器协议的,上面的函数:filter()、map()、reduce()、max()、min()、list()、for i in iterable。遵循迭代器协议的函数能对可迭代对象就行迭代。

内置函数与lambda匿名函数相关推荐

  1. java 匿名函数_Java中的lambda匿名函数使用

    Java中的lambda匿名函数使用 lambda匿名函数的使用是为了满足某些情况下需要临时定义函数,或者事先定义,需要时才使用.在python里面,lambda表达式的表达方式为:lambda 参数 ...

  2. Python内置函数filter()和匿名函数lambda解析

    一.内置函数filter filter()函数是 Python 内置的一个高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回由符合条件迭代器 ...

  3. Python教程:内置函数filter()和匿名函数lambda解析

    一.内置函数filter filter()函数是 Python 内置的一个高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回由符合条件迭代器 ...

  4. Python 之父为什么嫌弃 lambda 匿名函数?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 Python 支持 lambda 匿 ...

  5. Python之高阶函数(abs、map、reduce、filter、lambda匿名函数)

    Python之高阶函数(abs.map.reduce.filter.lambda匿名函数) 什么是内置高阶函数 高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返 ...

  6. 自定义函数变量的设置(*/**),lambda匿名函数(map/filter/zip/enumerate)

    自定义函数变量的设置 一个星号 *传入元组,且这个变量为可变变量 两个星号 **后的那些参数被当做字典类型传递到函数中 带有双星号的可变参数只能出现在参数列表的最后 注意双星号是字典类型(字典形式要有 ...

  7. 未捕获的错误:始终违反:元素类型无效:预期为字符串(对于内置组件)或类/函数,但得到了:对象

    本文翻译自:Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in ...

  8. C++11 lambda匿名函数看这一篇足以

    文章目录 1.lambda匿名函数的定义 2.lambda匿名函数中的[外部变量] lambda 源自希腊字母表中第 11 位的 λ,在计算机科学领域,它则是被用来表示一种匿名函数.所谓匿名函数,简单 ...

  9. A19-Python基础之lambda匿名函数-过滤器-映射

    1.lambda匿名函数 1.1 示例: def ds(x):return 2*x+1 ds(5) #11 匿名函数语法: lambda x,y:2*x+y :前为参数,:后边为运算式 g = lam ...

最新文章

  1. meson 中调用shell script
  2. 学习笔记之xss原理篇
  3. 您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
  4. 让迅雷的胃口变得更大!
  5. MapReduce源码之InputFormat
  6. win7下计划任务schtasks使用详解及错误:无法加载列资源的解决方法1
  7. 惜分飞oracle,惜分飞 - 提供7*24专业数据库(Oracle,SQL Server,MySQL等)恢复和Oracle技术服务@Tel:+86 13429648788...
  8. DVP,LVDS和MIPI
  9. loj#115. 无源汇有上下界可行流
  10. 【优化算法】蛾群优化算法(MSA)【含Matlab源码 1807期】
  11. 基于C++、MySQL的图书销售管理系统
  12. Centos:更换为网易镜像源
  13. VMP3.6的反调试和反虚拟机
  14. Java实现简单的文本编辑器
  15. django的ORM常用字段和参数
  16. 大数据破危险品物流难题 危化品污染有望“圈治”
  17. 开启snapshot的操作失败 如何解决——两种办法
  18. jQuery之图片显示篇A
  19. 《电子测量与仪器学报》最新投稿经验2022.9
  20. 16进制转double dotnet_IEEE 16进制字符串转化为double类型

热门文章

  1. 1-1:网络初识之了解什么是协议以及TCP/IP协议
  2. 3-7:常见任务和主要工具之文本处理
  3. SSM项目调用Dao层查询方法传入正确参数但查不到数据
  4. Django之Ajax刷新记住用户名
  5. 国内外免费PHP开源建站程序一览(最全)
  6. 查找问题的利器 - Git Bisect
  7. Android开发之多点触摸(Multitouch)
  8. 一图看懂边缘计算整体架构
  9. 运营、AI、Python数据分析,这3场直播你别错过
  10. Git 各指令的本质,真是通俗易懂啊