概览参见  https://www.runoob.com/python/python-built-in-functions.html

官方文档 https://docs.python.org/3/library/functions.html?highlight=built#ascii

0. 高阶函数

  满足俩个特性任意一个即为高阶函数

  1.函数的传入参数是一个函数名

  2.函数的返回值是一个函数名

1. map() 函数

  map(functioniterable...) 即接收两种参数,函数 f 和 可迭代对象, map将传入的函数依次作用到序列的每个元素,返回的为迭代对象map类型。

  用法举例:

  1. num1 = [1, 2, 4, 7, 11]
  2.  
  3. # lambda x: x+1
  4. def add(x):
  5. return x+1
  6.  
  7. # lambda x: x**2
  8. def pf(x):
  9. return x**2
  10.  
  11. def map_test(func, array):
  12. num2 = []
  13. for i in array:
  14. res = func(i)
  15. num2.append(res)
  16. return num2
  17.  
  18. ret = map_test(lambda x: x+1, num1)
  19. print(ret)
  20.  
  21. rett = map_test(lambda x: x**2, num1)
  22. print(rett)
  23.  
  24. rettt = map(lambda x:x+1, num1)
  25. # 第一个参数为可用匿名函数或者有名函数,第二个参数为可迭代对象,返回值为可迭代对象
  26. print(rettt)
  27. retttt = list(rettt)
  28. print(retttt)
  29.  
  30. name = "helloworld"
  31. s = list(map(lambda x:x.upper(), name))
  32. print(s)
  33.  
  34. ===============
  35. [2, 3, 5, 8, 12]
  36. [1, 4, 16, 49, 121]
  37. <map object at 0x00000000022FAAC8>
  38. [2, 3, 5, 8, 12]
  39. ['H', 'E', 'L', 'L', 'O', 'W', 'O', 'R', 'L', 'D']

2. filter() 函数

  filter(functioniterable) filter()函数接收一个函数 f 和一个可迭代对象,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新的可迭代对象。

  用法举例:

  1. people = ['m_zhangsan_sb', 'lisi', 'm_wangwu_sb', 'chenliu']
  2.  
  3. # lambda x:x.endswith('sb')
  4. def end(n):
  5. return n.endswith('sb')
  6.  
  7. def filter_test(func, array):
  8. ret = []
  9. for i in array:
  10. if func(i):
  11. ret.append(i)
  12. return ret
  13.  
  14. a = filter_test(lambda x:x.endswith('sb'), people)
  15. print(a)
  16. l = list(filter(lambda x: x.endswith('sb'), people))
  17. print(l)
  18.  
  19. ===============
  20. ['m_zhangsan_sb', 'm_wangwu_sb']
  21. ['m_zhangsan_sb', 'm_wangwu_sb']

3. reduce() 函数

  reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

  

例如,编写一个f函数,接收x和y,返回x和y的和:

1
2
def f(x, y):
    return + y

调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:

1
2
3
4
5
先计算头两个元素:f(13),结果为4
再把结果和第3个元素计算:f(45),结果为9
再把结果和第4个元素计算:f(97),结果为16
再把结果和第5个元素计算:f(169),结果为25
由于没有更多的元素了,计算结束,返回结果25

上述计算实际上是对 list 的所有元素求和。虽然Python内置了求和函数sum(),但是,利用reduce()求和也很简单。

reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100,计算:

1
reduce(f, [13579], 100)

结果将变为125,因为第一轮计算是:

计算初始值和第一个元素:f(100, 1),结果为101

  用法举例:

  1. num1 = [1,2,3,4]
  2.  
  3. def reduce_test(func, array, init=None):
  4. if init == None:
  5. res = array.pop(0)
  6. else:
  7. res = init
  8. for i in array:
  9. res = func(res, i)
  10. return res
  11.  
  12. a = reduce_test(lambda x,y:x*y, num1)
  13. print(a)
  14.  
  15. # 先导入库
  16. from functools import reduce
  17. b = reduce(lambda x,y:x*y, num1, 100)
  18. print(b)
  19.  
  20. ============
  21. 24
  22. 2400

4. zip() 函数

  zip(*iterables)

  

zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例:

1.示例1:

  1. x = [1, 2, 3]
  2.  
  3. y = [4, 5, 6]
  4.  
  5. z = [7, 8, 9]
  6.  
  7. xyz = zip(x, y, z)
  8.  
  9. print xyz

运行的结果是:

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

从这个结果可以看出zip函数的基本运作方式。

2.示例2:

  1. x = [1, 2, 3]
  2. y = [4, 5, 6, 7]
  3. xy = zip(x, y)
  4. print xy

运行的结果是:

[(1, 4), (2, 5), (3, 6)]

从这个结果可以看出zip函数的长度处理方式。

3.示例3:

  1. x = [1, 2, 3]
  2. x = zip(x)
  3. print x

运行的结果是:

[(1,), (2,), (3,)]

从这个结果可以看出zip函数在只有一个参数时运作的方式。

4.示例4:

  1. x = zip()
  2. print x

运行的结果是:

[]

从这个结果可以看出zip函数在没有参数时运作的方式。

5.示例5:

  1. x = [1, 2, 3]
  2.  
  3. y = [4, 5, 6]
  4.  
  5. z = [7, 8, 9]
  6.  
  7. xyz = zip(x, y, z)
  8.  
  9. u = zip(*xyz)
  10.  
  11. print u

运行的结果是:

[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

一般认为这是一个unzip的过程,它的运行机制是这样的:

在运行zip(*xyz)之前,xyz的值是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

那么,zip(*xyz) 等价于 zip((1, 4, 7), (2, 5, 8), (3, 6, 9))

所以,运行结果是:[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

注:在函数调用中使用*list/tuple的方式表示将list/tuple分开,作为位置参数传递给对应函数(前提是对应函数支持不定个数的位置参数)

6.示例6:

  1. x = [1, 2, 3]
  2. r = zip(* [x] * 3)
  3. print r

运行的结果是:

[(1, 1, 1), (2, 2, 2), (3, 3, 3)]

它的运行机制是这样的:

[x]生成一个列表的列表,它只有一个元素x

[x] * 3生成一个列表的列表,它有3个元素,[x, x, x]

zip(* [x] * 3)的意思就明确了,zip(x, x, x)

5. max() min() 函数 (跟sort()可类比)

max(iterable, key, default) 求迭代器的最大值,其中iterable 为迭代器,max会for i in … 遍历一遍这个迭代器,然后将迭代器的每一个返回值当做参数传给key=func 中的func(一般用lambda表达式定义) ,然后将func的执行结果传给key,然后以key为标准进行大小的判断。

以下根据不同的判断条件返回最大值也不同

  1. d1 = {'name': 'egon', 'price': 100}
  2. d2 = {'name': 'rdw', 'price': 666}
  3. d3 = {'name': 'zat', 'price': 1}
  4. l1 = [d1, d2, d3]
  5. a = max(l1, key=lambda x: x['name'])
  6. print(a)
  7. b = max(l1, key=lambda x: x['price'])
  8. print(b)
  9.  
  10. ===================
  1. {'name': 'zat', 'price': 1}
  2. {'name': 'rdw', 'price': 666}
  1. people = [
  2. {'name': 'zs', 'age': 1},
  3. {'name': 'ls', 'age': 2},
  4. {'name': 'ww', 'age': 6},
  5. {'name': 'cl', 'age': 4}
  6. ]
  7.  
  8. a = max(people, key=lambda dic:dic['age'])
  9. print(a)
  10.  
  11. =================
  12. {'name': 'ww', 'age': 6}

  

  

Python - 内置函数 选例的更多相关文章

  1. python内置函数

    python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...

  2. python 内置函数和函数装饰器

    python内置函数 1.数学相关 abs(x) 取x绝对值 divmode(x,y) 取x除以y的商和余数,常用做分页,返回商和余数组成一个元组 pow(x,y[,z]) 取x的y次方 ,等同于x ...

  3. Python基础篇【第2篇】: Python内置函数(一)

    Python内置函数 lambda lambda表达式相当于函数体为单个return语句的普通函数的匿名函数.请注意,lambda语法并没有使用return关键字.开发者可以在任何可以使用函数引用的位 ...

  4. [python基础知识]python内置函数map/reduce/filter

    python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...

  5. Python内置函数进制转换的用法

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer numb ...

  6. Python内置函数(12)——str

    英文文档: class str(object='') class str(object=b'', encoding='utf-8', errors='strict') Return a string  ...

  7. Python内置函数(61)——str

    英文文档: class str(object='') class str(object=b'', encoding='utf-8', errors='strict') Return a string ...

  8. 那些年,很多人没看懂的Python内置函数

    Python之所以特别的简单就是因为有很多的内置函数是在你的程序"运行之前"就已经帮你运行好了,所以,可以用这个的特性简化很多的步骤.这也是让Python语言变得特别的简单的原因之 ...

  9. Python 内置函数笔记

    其中有几个方法没怎么用过, 所以没整理到 Python内置函数 abs(a) 返回a的绝对值.该参数可以是整数或浮点数.如果参数是一个复数,则返回其大小 all(a) 如果元组.列表里面的所有元素都非 ...

随机推荐

  1. 洗礼灵魂,修炼python(24)--自定义函数(5)—匿名函数lambda

    在这个互联网时代,大家都喜欢匿名,匿名上网,匿名登录,匿名操作等等,都不喜欢实名对吧?(虽然说现在实名制已经快到来,题外话,扯远了),当然python里也有个不喜欢实名的,它的功效优点特殊,说强大吧? ...

  2. Django电商项目---完成商品主页显示day2

    利用DjangoAdmin初始化数据库 创建项目 python manage.py startapp df_goods 添加配置 manas/urls.py manas/settings.py 新创建 ...

  3. .whl文件打开方式 Python

    wheel文件本质上就是zip或者rar,只不过他更加方便python的安装以及使用.在之前的图片中我们只要使用pip install wheel 就可以安装wheel. 在安装了wheel之后我们可 ...

  4. 玩转FusionCharts:Y轴数字形式(如去掉K)

    玩转FusionCharts:Y轴数字形式(如去掉K) 如果运行FusionCharts带的例子,你会发现FusionCharts表中的数字(通常是Y轴)会带上’k’,也就是如20000,会变成20k ...

  5. swift class的缺省基类(SwiftObject)与内存模型

    Hard Constraints on Resilience The root of a class hierarchy must remain stable, at pain of invalida ...

  6. 全文索引搜索whoosh

    问题 Whoosh是python中解决索引查找的模块,在讨论索引查找的文章已经对有关索引查找进行了阐述,此处具体说明Whoosh模块的应用. 思路说明 Whoosh的安装 这里有具体内容(链接被被阉割 ...

  7. CF848C:Goodbye Souvenir(CDQ分治)

    Description 给定长度为$n$的数组, 定义数字$X$在$[l,r]$内的值为数字$X$在$[l,r]$内最后一次出现位置的下标减去第一次出现位置的下标给定$m$次询问, 每次询问有三个整数 ...

  8. 3150luogu洛谷

    若说代码 那真的是很水 但是 思想却有点意思 这道题是洛谷博弈论专题的第一道入门题, 然而刚开始我是不会做的, 毕竟是道入门题, 我博弈论还没入门呢. 这道题的做法就是: 如果m为偶数, 那么先手赢( ...

  9. 可长点心吧-sort

    sort #<algorithm> 用的时候一定是 从 第一个(你想要排序的范围内的) 到 最后一个+1 真的错了不止一次了 真的长点心吧

  10. Echarts中太阳图(Sunburst)的实例

    Echarts中太阳图(Sunburst)的实例 目前在项目中要实现一个Echars中的太阳图,但是Echars中的太阳图的数据格式是一个树形结构,如下代码格式如下: var mapData = [ ...