电子发烧友网 > 嵌入式技术 > 编程语言及工具 > 正文

关于Python巧妙而强大的内置函数

2020年12月14日 14:52 ? 次阅读

python内置了一些非常巧妙而且强大的内置函数,对初学者来说,一般不怎么用到,我也是用了一段时间python之后才发现,哇还有这么好的函数,这个函数都是经典的而且经过严格测试的,可以一下子省了你原来很多事情,代码不仅简洁易读了很多,而且不用自己去闭门造车.既方便了自己又减少了bug。

1.sorted()
1)对于一个列表排序
sorted([100,98,102,1,40])
>>>[1,40,98,100,102]

2)通过key参数/函数

比如一个长列表里面嵌套了很多字典元素,我们要按照每个元素的长度大小排序
L=[{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
new_line=sorted(L,key=lambdax:len(x))
print(new_line)
>>>[{1:9},{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6}]

3)对由tuple组成的List排序

比如下面是学生里面的年龄的一个list
students=[('wang','A',15),('li','B',12),('zhang','B',10)]
print(sorted(students,key=lambdastudent:student[2]))
>>>[('zhang','B',10),('li','B',12),('wang','A',15)]

4)用cmp函数排序
students=[('wang','A',15),('li','B',12),('zhang','B',10)]
print(sorted(students,cmp=lambdax,y:cmp(x[0],y[0])))
>>>[('li','B',12),('wang','A',15),('zhang','B',10)]

其实对于python的排序要仔细讲,需要一整篇幅讲它的排序算法,内容非常多,感兴趣的可以去看一下源码,看它是如何设计的,这里只是先点一下。

2.map()
map可以根据提供的函数对指定序列做映射,它接受一个函数f和一个list,并通过把函数f以此作用在list上的每个元素,然后返回一个新的list,map函数的入参也可以是多个.注意这个函数一定要有返回值(值值值重要的说三遍)。

不然就会返回新的list类似[None,None,None,None,None,None,None,None,None]

o4YBAF9uESOAAX_yAAEy-Ad1h5c394.png

适合的场景是对列表里面的一些元素需要重复的操作,用map就可以轻松搞定。

3.enumerate()
Python中,迭代永远是取出元素本身,而非元素的索引,有的时候我们需要知道元素的索引比如在一个很长的列表里面是一些网站名,我们希望在打印的时候,也能列出索引。若没有这个函数,我们需要在加一个变量,在循环打印的时候让这个计数变量递增,现在有了enumerate,就不用这么麻烦了,直接搞定。

o4YBAF9uESaAXbsmAAILVR2RcmY378.png

4.zip()
zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表
x=[1,2,3]
y=[4,5,6]
z=[7,8,9]
xyz=zip(x,y,z)
>>printxyz

这个函数特别是在构建字典序列的时候非常方便(这招非常巧妙,大家可以仔细揣摩)

pIYBAF9uESiAcptjAAE7W0rsPfU235.png

5.filter()
filter函数接受一个函数f和一个list,这个函数f的作用是对每个元素进行判断,返回True或者False,这样可以过滤掉一些不符合条件的元素,然后返回符合条件的list.
defis_even(x):
returnx%2==0
print(filter(is_even,[1,2,3,4,5]))
>>>[2,4]

特别是在处理文件的时候,需要把一些空格,回车和空字符去掉

o4YBAF9uESqAHxOfAADoZj3mGyo841.png

6.reduce()
reduce函数的用法和map很类似,也是一个函数f和一个list,但是函数的入口参数一定要是两个,reduce也是对每个元素进行反复调用,最后返回最终的值,而map是返回一个list

o4YBAF9uESyAcA30AACFmcHID1E199.png

注意在python3里面reduce已经从全局函数里面移除了,需要用的话要fromfunctoolsimportreduce

编辑:hfy


下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

零基础Python入门教程二

随着新技术的不断推进,在未来无论你要进入网页开发、数据分析、机器学习、人工智能还是无人车等领域,Python 都是必不可
发烧友学院发表于 2019-04-09 00:00? 740次阅读
零基础Python入门教程二

如何规划机器人的运动方式至关重要

最近,GitHub 上开源了一个存储库,该库实现了机器人技术中常用的一些路径规划算法,大部分代码是用....
发表于 2020-12-14 13:39? 60次阅读
如何规划机器人的运动方式至关重要

人工智能Python入门到精通、Java全套(共92G)你想要的全都有

发表于 2020-12-12 22:04? 0次阅读
人工智能Python入门到精通、Java全套(共92G)你想要的全都有

鸿蒙技术特刊——第一期 上线了!

随着HarmonyOS技术的不断成熟,鸿蒙系统被用在越来越多的领域,如手机操作系统、智能家居、智能汽车、智能机器人等...
发表于 2020-12-09 14:52? 768次阅读
鸿蒙技术特刊——第一期 上线了!

使用Python开发鸿蒙设备程序(0-初体验)

原文来自51CTO社区: 到目前为止,鸿蒙设备开发的“官方指定语言”还是C语言! 这看起来是一件正常的事,毕...
发表于 2020-12-03 10:54? 606次阅读
使用Python开发鸿蒙设备程序(0-初体验)

使用Python开发鸿蒙设备程序(0-初体验)(应该是第一人在鸿蒙上来做的)

到目前为止,鸿蒙设备开发的“官方指定语言”还是C语言! 这看起来是一件正常的事,毕竟鸿蒙设备开发还是属于嵌入...
发表于 2020-11-26 23:08? 561次阅读
使用Python开发鸿蒙设备程序(0-初体验)(应该是第一人在鸿蒙上来做的)

【HarmonyOS HiSpark AI Camera试用 连载】单独编译一个程序

使用python工具对整个系统打包编译整体大家都很熟悉了,但如果只是想熟悉一下代码,那么将应用程序拿出来单独编译也是...
发表于 2020-11-26 22:18? 154次阅读
【HarmonyOS HiSpark AI Camera试用 连载】单独编译一个程序

准备Java与Python协同开发环境

1.  前言 在本文里,将详细说明如何使用Chaquopy来帮助我们用最简便的方式实现Android Java呼叫Python...
发表于 2020-11-24 18:09? 101次阅读
准备Java与Python协同开发环境

以Python撰写 AI模型框架(Framework)

1. 前言:   在AI(人工智慧)方面,由于当今的机器学习本质是一种归纳性推理。软体框架的复用(Reuse)性愈...
发表于 2020-11-24 18:06? 101次阅读
以Python撰写 AI模型框架(Framework)

迅为-iMX6ULL开发板-Python移植-运行测试2

迅为-iMX6ULL开发板-Python移植-运行测试2 92.3.1  库功能文件测试 进入_install/bin 目录下使用命...
发表于 2020-11-23 11:52? 303次阅读
迅为-iMX6ULL开发板-Python移植-运行测试2

迅为-iMX6ULL开发板-Python移植-编译1

本章节介绍 Python 如何移植到 IMX6ULL 开发板上,并有几个简单的测试例程。本章节使用的资料已经放到了开发板...
发表于 2020-11-20 11:09? 303次阅读
迅为-iMX6ULL开发板-Python移植-编译1

请问python文件怎么操作?

python文件的操作步骤
发表于 2020-11-16 07:53? 101次阅读
请问python文件怎么操作?
包头侠凹航天信息有限公司| 诸暨倍老钦跆拳道俱乐部| 吉林刻值陕航天信息有限公司| 铁岭度焙广告传媒有限公司| 绥化迂睹拓企业管理有限公司| 湘潭郴顿电子有限公司| 馆陶群独月集团有限责任公司| 开封舷菲傲有限公司| 桂林嗣渭新能源有限公司| 鄂州胶酱工程有限公司|