Python进阶系列连载(2)——那些容易被忽略的问题(中)

浏览: 4407

前言


进阶部分连载继续~


如果还没看过我的入门连载部分,先看:

https://ask.hellobi.com/blog/wangdawei/10288


当然,小编的免费入门课程已经有咯,看过连载的朋友可以看看视频再快速梳理一遍~

视频传送门:https://edu.hellobi.com/course/234

图片.png


前文传送门:

Python进阶系列连载(1)——那些容易被忽略的问题(上)


字符串快速转换为列表


在入门阶段我们讲了不同数据类型的转换关系,比如列表和元组。

这里讲讲字符串转为列表!


小明:老湿!字符串和列表好像不像会发生关系的啊!


图片.png


小明,那我问问你,如果把一个字符串 'Python'  的每个字符作为列表元素,怎么操作?


小明:emmm,小红,还是你来回答吧,毕竟我们也是有关系的


小红:。。。


小红:老师,我觉得可以这样:


图片.png


小红的列表生成式学的很不错啊!给你点赞~


我们今天新学一种方法:


图片.png


这样是不是很简单,就像给元组穿上list外衣一样,给字符串披上list的外衣,就变成了list


小明:老湿!这个看起来也就一般般啊!如果我想把‘I love Python’变成列表,元素分别是I love Python这三个,怎么做呢??【坏笑】


图片.png


这个嘛...应该是...


小明:老湿,你不会了吧!!!


其实我是在逗你的,我们新学一个字符串分割的方法,分割,有点像列表的切片,只不过之前我们一般是定好位【找到索引】,一刀切下去。


小明:那现在呢?


现在嘛,按照特点切。


小明:什么是按照特点切?


听过庖丁解牛的故事么?


图片.png

小红:老师,是因为他是从牛身上的骨节脆弱部分切开!


是啊,所以我们可以认为骨节是一种特征,我们找到字符串的特征就能完成任务!


小明:我明白了,我要求的分割字符串就是按照空格分开的!


是的没错,我们现在根据空格将字符串转为列表,小明,给我把我用了19年的那把宰牛刀拿来!


小明:emmm


图片.png


使用方法:字符串.split('分隔符')


默认是空格,所以这里写了两种!


小明:那如果是2017-12-06呢?


小红:这很简单啊,这样即可:


图片.png


小红举一反三能力不错~


像之前的空格和这里的‘-’都叫做分隔符。


字典中按照键的顺序输出


还记得入门部分降到字典时候么?字典有三大特性其中有一个就是无序性!


小明:老湿,所以呢?


emmm,小明,你听我说完!所以我给你出个题:


图片.png


你看,现在我想按照key的字母顺序看看打印出来的结果,但是先打印的是b,这怎么办!


小明:老湿,你要求真高!不过我真的不会。。


好吧,可以这样的:


图片.png


我们给字典套上个sorted的外衣就行啦!


小明:老湿,我就这个表情:


图片.png


小明,我们要讲的重点是,还记得字典里的key是唯一的么?


小明:记得啊,我还记得根据key可以查找value呢!


那你很棒棒哦,如果让你通过value找key,怎么做呢?


小明:自己挖的坑....


图片.png


嗯,这个确实比较难,我们来看看


还是用刚才的dict1:


图片.png


我们定义一个叫reverse_lookup的函数,传入两个参数

第一个是要查询的字典,第二个是要查的值

然后循环字典,将键对应的值分别和要查找的值比较,当出现异样的就返回!


小明:看起来不错啊


是啊,看起来不错,但是当我们要找的值不在字典里呢?


图片.png


什么都没返回的样子!按照我们的思路,找不到东西也应该告诉我啊


还记得我大学时去面试实习生,面试了3家公司,最后都没给我结果,也不通知我面试没过,这样确实不太好,直白点多好!


所以我们这里学个新的系统关键字:raise


它可以抛出异常!


小明:老湿,我们不喜欢异常,你还要生成异常???


我们看一下具体操作!


图片.png


仔细看看函数重新定义的吧


小明:不就是加了raise那句么?


注意缩进!当找到值对应的key,直接运行return,然后将返回的值传回函数调用处,函数就调用结束了

当我们没找到时候,最后会抛出我们设定的LookupError


小明:老湿,那其实可以这样啊!


图片.png


emmm,是的,这样也可以,不过我这里要强调的是raise的用法!


小明:好吧。。。


今天作业是自己跟着操作一遍~

自己不敲代码永远学不会写代码

下课

人生苦短,我选Python

未完待续,连载中......

欢迎评论指出文中错误和提问~~~


下一篇链接:Python进阶系列连载(3)——那些容易被忽略的问题(下)

推荐 10
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

18 个评论

加油,不错
忠实粉丝在这里
忠实粉丝在这里
感谢!
老师,为啥用value查找key的函数定义时if后面用的是dict1[key],而不是dic[key]
因为在本文前面代码块定义了一个名为dict1的字典
那这样的话,dic的定义不就没啥用了么,所有的查找都是在dict1中进行的
嗯 应该吧函数里的dic1改成dic形参 写的时候 犯错了 谢谢指出
老师好棒
人生苦短,你写的很好
谢谢支持~
当一个value与dict中的多个key相对应时,怎么破??(尝试了print,可以将与value对应的多个key输出,但是用return就不知道怎么弄了)
创建一个空列表存放这些key,每次找到新的就appennd进去 最后返回列表
A={'a': 18, 'c': 12, 'b': 45,'d':50,'e':20,'f':12}
B=dict((j,i) for i in sorted(A.values()) for j in A.keys() if A[j]==i)
B
按照value排序
for i in sorted(A.values()):
for j in A:
if A[j]==i:
print('%s:%s '%(j,i),end=" ")
for i in sorted(A.values()):
for j in A:
if A[j]==i:
print('%s:%s '%(j,i),end=" ")
按照值排序
加油,支持王老师

要回复文章请先登录注册