前言

Python针对众多的类型,提供了众多的内建函数来处理,这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作,下面话不多说了,来一看看详细的介绍吧。
map()
map()函数接受两个参数,一个是函数,一个是可迭代对象(Iterable),map将传入的函数依次作用到可迭代对象的每一个元素,并把结果作为迭代器(Iterator)返回。
举例说明,有一个函数f(x)=x^2 ,要把这个函数作用到一个list[1,2,3,4,5,6,7,8,9]上:
运用简单的循环可以实现:
>>> def f(x): ... return x * x ... L = [] for n in [1, 2, 3, 4, 5, 6, 7, 8, 9]: L.append(f(n)) print(L)
运用高阶函数map() :
>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> list(r) [1, 4, 9, 16, 25, 36, 49, 64, 81]
结果r是一个迭代器,迭代器是惰性序列,通过list()函数让它把整个序列都计算出来并返回一个list。
如果要把这个list所有数字转为字符串利用map()就简单了:
>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])) ['1', '2', '3', '4', '5', '6', '7', '8', '9']
小练习:利用map()函数,把用户输入的不规范的英文名字变为首字母大写其他小写的规范名字。输入['adam', 'LISA', 'barT'],输出['Adam', 'Lisa', 'Bart']
def normalize(name): return name.capitalize() l1=["adam","LISA","barT"] l2=list(map(normalize,l1)) print(l2)
reduce()
reduce()函数也是接受两个参数,一个是函数,一个是可迭代对象,reduce将传入的函数作用到可迭代对象的每个元素的结果做累计计算。然后将最终结果返回。
效果就是:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
举例说明,将序列[1,2,3,4,5]变换成整数12345:
>>> from functools import reduce >>> def fn(x, y): ... return x * 10 + y ... >>> reduce(fn, [1, 2, 3, 4, 5]) 12345
小练习:编写一个prod()函数,可以接受一个list并利用reduce求积:
from functools import reduce def pro (x,y): return x * y def prod(L): return reduce(pro,L) print(prod([1,3,5,7]))
map()和reduce()综合练习:编写str2float函数,把字符串'123.456'转换成浮点型123.456
CHAR_TO_FLOAT = {
'0': 0,'1': 1,'2': 2,'3': 3,'4': 4,'5': 5,'6': 6,'7': 7,'8': 8,'9': 9, '.': -1
}
def str2float(s):
nums = map(lambda ch:CHAR_TO_FLOAT[ch],s)
point = 0
def to_float(f,n):
nonlocal point
if n==-1:
point =1
return f
if point ==0:
return f*10+n
else:
point =point *10
return f + n/point
return reduce(to_float,nums,0)#第三个参数0是初始值,对应to_float中f
filter()
filter()函数用于过滤序列,filter()也接受一个函数和一个序列,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
举例说明,删除list中的偶数:
def is_odd(n): return n % 2 == 1 list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])) # 结果: [1, 5, 9, 15]
小练习:用filter()求素数
计算素数的一个方法是埃氏筛法,它的算法理解起来非常简单:
首先,列出从2开始的所有自然数,构造一个序列:
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...
取序列的第一个数2,它一定是素数,然后用2把序列的2的倍数筛掉:
3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...
取新序列的第一个数3,它一定是素数,然后用3把序列的3的倍数筛掉:
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...
取新序列的第一个数5,然后用5把序列的5的倍数筛掉:
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...
不断筛下去,就可以得到所有的素数。
用Python实现这个算法,先构造一个从3开始的期数数列:
def _odd_iter(): n = 1 while True: n = n + 2 yield n #这是一个生成器,并且是一个无线序列
定义一个筛选函数:
def _not_divisible(n): return lambda x: x % n > 0
定义一个生成器不断返回下一个素数:
def primes(): yield 2 it = _odd_iter() # 初始序列 while True: n = next(it) # 返回序列的第一个数 yield n it = filter(_not_divisible(n), it) # 构造新序列
打印100以内素数:
for n in primes(): if n < 100: print(n) else: break
sorted()
python内置的sorted()函数可以对list进行排序:
>>> sorted([36, 5, -12, 9, -21]) [-21, -12, 5, 9, 36]
sorted()函数也是一个高阶函数,还可以接受一个key函数来实现自定义排序:
>>> sorted([36, 5, -12, 9, -21], key=abs) [5, 9, -12, -21, 36]
key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序.
默认情况下,对字符串排序,是按照ASCII的大小比较的,由于'Z' < 'a',结果,大写字母Z会排在小写字母a的前面。如果想忽略大小写可都转换成小写来比较:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower) ['about', 'bob', 'Credit', 'Zoo']
要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True) ['Zoo', 'Credit', 'bob', 'about']
小练习:假设我们用一组tuple表示学生名字和成绩:L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] 。用sorted()对上述列表分别按c成绩从高到低排序:
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_score(t):
for i in t:
return t[1]
L2=sorted(L,key= by_score)
print(L2)
运用匿名函数更简洁:
L2=sorted(L,key=lambda t:t[1]) print(L2)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# python的内建函数
# python中的内建函数
# python内建函数大全
# python中的reduce内建函数使用方法指南
# Python中内建函数的简单用法说明
# Python中集合的内建函数和内建方法学习教程
# 详解Python中映射类型的内建函数和工厂函数
# Python列表list内建函数用法实例分析【insert、remove、index、pop等】
# Python随手笔记之标准类型内建函数
# 对Python 内建函数和保留字详解
# Python内建函数之raw_input()与input()代码解析
# Python列表list常用内建函数实例小结
# 一篇文章弄懂Python中的内建函数
# 迭代
# 是一个
# 举例说明
# 要把
# 第三个
# 转换成
# 内建
# 高阶
# 作用于
# 还可以
# 浮点
# 说了
# 不多
# 这是一个
# 自定义
# 可以实现
# 这篇文章
# 谢谢大家
# 排在
# 来实现
相关文章:
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何在Golang中指定模块版本_使用go.mod控制版本号
如何规划企业建站流程的关键步骤?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
,巨量百应是干嘛的?
学校建站服务器如何选型才能满足性能需求?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
网站制作公司排行榜,抖音怎样做个人官方网站
如何在阿里云通过域名搭建网站?
建站之星安装后如何配置SEO及设计样式?
如何快速打造个性化非模板自助建站?
如何高效生成建站之星成品网站源码?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
如何在阿里云购买域名并搭建网站?
微信推文制作网站有哪些,怎么做微信推文,急?
如何通过二级域名建站提升品牌影响力?
如何快速搭建高效WAP手机网站吸引移动用户?
如何在宝塔面板中修改默认建站目录?
建站之星后台密码如何安全设置与找回?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
如何确保西部建站助手FTP传输的安全性?
教程网站设计制作软件,怎么创建自己的一个网站?
如何安全更换建站之星模板并保留数据?
如何通过wdcp面板快速创建网站?
如何撰写建站申请书?关键要点有哪些?
如何通过智能用户系统一键生成高效建站方案?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
如何在云虚拟主机上快速搭建个人网站?
如何通过VPS建站无需域名直接访问?
已有域名和空间,如何快速搭建网站?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
如何在Windows 2008云服务器安全搭建网站?
网站制作价目表怎么做,珍爱网婚介费用多少?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
如何用花生壳三步快速搭建专属网站?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
如何在建站之星绑定自定义域名?
微课制作网站有哪些,微课网怎么进?
建站之星伪静态规则如何正确配置?
如何零基础开发自助建站系统?完整教程解析
如何快速搭建FTP站点实现文件共享?
*请认真填写需求信息,我们会在24小时内与您取得联系。