进阶的路上一定少不了刷题,少不了实战,少不了日日夜夜的练习!很多人抱怨自己的功力始终没有提高,有一种书到用数方恨少的感觉,其实还是练少了,而且要精练,单题海战术也不行,提高单位时间的利用率。

刚入门的人你去刷Leetcode合适吗,你连基本的算法都不懂,轻者吐血,刷了一天没有头绪,重者从入门到放弃,选择合适的循序渐进最为重要。年前我们在小密圈选了一部分的题目,进行精刷,这些题目都是我过滤出来的,精选出来的,结合趣味和知识,淡妆浓抹总相宜。

下面我拿出其中的一道题,这一道题有5种解法,非常适合进阶提高的同学仔细推敲,一起来看一下。

01

检查信用卡

给定一个信用卡号码,我们可以通过一些基本知识来确定发行人/供应商是谁。

完成get_issuer()将使用下面显示的值的功能来确定给定卡号的发卡机构。如果数字不匹配,则该函数应返回该字符串Unknown。

测试用例:

get_issuer(4111111111111111) == "VISA"get_issuer(4111111111111) == "VISA"get_issuer(4012888888881881) == "VISA"get_issuer(378282246310005) == "AMEX"get_issuer(6011111111111117) == "Discover"get_issuer(5105105105105100) == "Mastercard"get_issuer(5105105105105106) == "Mastercard"get_issuer(9111111111111111) == "Unknown"

先不要看答案,自己动手思考几分钟...

解法一:

菜鸟解法就是比较平铺直叙,数据结构上直接就用列表和字典构建,然后遍历列表进行匹配即可!

解法二:

点评这种解法非常巧妙,函数体内一行搞定,数据结构设计的时候就很妙,跟上面的不太一样。

第一,利用字典数据结构,字典是hash结构,遍历速度快,比列表要快n倍,性能上高。

第二,字典的Key设计很讲究,整体的思路也是遍历字典,但是字典的Key使用元组包裹,想到用元组作为key,这样的写法都是老手所为!

也就是信用卡的开头数组,但是字符串匹配的开头的时候如果用startswith函数,一定要是字符串类型,所以又有的map函数把数字转换为字符。

第三,利用next函数,一般next函数都是跟生成器相关的,就是不断的循环可迭代的对象。这里用next来迭代整个字典,如果遍历之后找不到,显示Unknow. 这样的写法极其老道,可能写成下面的做法,更适合理解:

解法三:

点评,这return里面大作文章这样的用法也是比较老道的,而且用了5层的if else if else ,算是5目运算了!

大部分return里面用这样的写法:

return [{'aa':student.name'bb':student.age} for student in students]

解法四:

点评,利用namedtuple这样的轻量级类完成是最好的,直观而且简洁!这种数据结构的设计非常不错。

把搜索的结果放在一个列表里面,结果是True/False ,巧妙的用了any来快速处理!省去了再次遍历的麻烦。

解法五:

用正则去匹配非常简洁,上面的匹配需要2个条件一个是startswith和len(num) in length,而正则只需要用[47].{13}这样几个字符串就描述了上面复杂的表达式,确实厉害!

02

实战训练

上面只是我们刷题的其中一小部分,里面还有很多精妙的招式,我都总结成pdf,并且每一道题目都详细的点评,如果静下心来好好吸收一波,一定功力大涨,收益匪浅。

现在我们要把良好的学习氛围继续下去,我们下一轮的实战一起学又要开始啦,一起实战练习,然后提问,思考,最后吸收!

python总结与思考_学Python很久但是一直无法提升!你有思考过究竟是为什么吗?...相关推荐

  1. 学好python需要哪些基础_学Python要避免哪些坑,如何巩固好基础

    学Python要避免哪些坑?零基础怎么入门Python?Python入门简单.语法简洁.功能强大,非常适合零基础入门IT行业的人学习.随着人工智能时代的来临,企业纷纷选择使用Python进行开发,Py ...

  2. python多久可以精通_学Python需要多久能学会?精通Python需要多长时间?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 严格意思上的说,Python其实是一个脚本语言,编程语言多种多样,但是却有开源和闭源之分,Python就是一种开放核心源代码编程语言,其开发代码的效率非常 ...

  3. python与php做网站_学Python对做网站用处大吗?

    Python是一种简单的编程语言,用于网站开发用处当然是非常大的,无可厚非, 相对于Java.C.PHP.C++ 和 VB. Python作为一个很年轻的语言,是相当的优秀.著名的搜索引擎 Googl ...

  4. 32岁学python有前途吗_学Python做爬虫有前途吗?老男孩IT教育

    随着人工智能.大数据时代的到来,Python这门编程语言也出现在大家的视野之中,更多人都开始关注Python.Python语法易懂.编写简洁,拥有丰富的库,作为人工智能的首选语言,Python是非常值 ...

  5. 学python将来做什么_学python能干嘛?

    明确目标 所谓明确目标就是要先知道,学习python的目的是为了什么? 一.Python可以做什么? 二.为了将来从来从事相关开发工作? 三.简便当前工作环境,提升工作效率? 四.不甘落后,学习一门语 ...

  6. 教师学python有优势吗_学Python有意义吗 就业前景如何

    学Python还是很有意义的.如果学会使用Python,可以增加工作效率,节省时间,对企业价值更大.就业岗位多,市场需求大,就业前景还是很可观的. 学Python的意义是什么 一说到Python,很多 ...

  7. 学习python有前途吗_学Python有前途吗?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先:Python语言在学术上非常受欢迎,不是计算机专业的人,很多都在学习Python.因为这个语言的前景是不可限量的,而且他的语法非常的简单易懂,这就让 ...

  8. python技术是什么_学 Python 都用来干嘛的?

    编程语言千千万万,不学python快乐少一半. 首先我们要明确一点,相比较于C语言,C++/Java等语言来说,python是比较适合普通人的一门语言. 如果说学编程是盖楼房,一个原始人要造现代化的房 ...

  9. 女生学python可以做什么_学 Python 都用来干嘛的?

    我!!虽然还是一只小菜鸡,可是不知不觉间也用python做了很多事,像爬天气预告,定期给女朋友微信号推送鸡汤之类的,但是!我认为最好用的还是用来爬下厨房! 作为一朵独自在广州挣扎的祖国希望,自然会在某 ...

  10. 准备学python用什么电脑_学Python买什么笔记本电脑?

    学习Python一定要使用类Unix环境,因为Python是开源生态,很多库在类Unix环境下运行很好,如果在Windows上,有时候安装就很麻烦,特别是带c/c++编译的原生库(动态链接库)的,有时 ...

最新文章

  1. 搜狗手机输入法php,在线调用搜狗云输入法
  2. 【解决】MySql 5.6 运行崩溃错误
  3. 高度不定垂直居中_经典:CSS垂直居中的七种方法
  4. 岚图FREE入局之战,手握哪些底牌?
  5. 图像处理时一些卷积核子函数的生成
  6. Ajax调试servlet连接失败
  7. 初识Python之安装—anaconda pycharm区别
  8. 02繁花嗅Django笔记
  9. read name 和 read 在 Bash 中的区别
  10. java小白会有那些工作_Java小白找工作与学习的第四天
  11. python中注释的快捷键_【Python】注释
  12. 吴恩达深度学习 —— 作业2
  13. C++ 编写的DLL导出的函数名乱码含义解析
  14. JAVA读取EMF文件并转化为PNG,JPG,GIF格式
  15. HTML—讲解分割线标签、文字居中、背景图片充满全图
  16. python 消息中间件_如何评价腾讯开源的消息中间件TubeMQ?
  17. 小米笔记本双固态硬盘安装win10+ubantu20双系统 实录
  18. 机械臂速成小指南(五):末端执行器
  19. 安卓手机root流程
  20. VS code 离线安装插件的方式(超简单)

热门文章

  1. 会员卡管理系统从哪些方面解决门店会员营销困扰?
  2. 2022-2027年中国衬衫行业市场调研及未来发展趋势预测报告
  3. Spring Security的工作原理
  4. Python/下载数据
  5. 【安信可IDE 1.5模板专题2】安信可windows一体化环境IDE V1.5 ESP8266 SDK二次开发直连阿里云飞燕平台,天猫精灵语音控制;
  6. Raywenderlich: 用 VFX 制作蝴蝶飞起的效果
  7. 3DGIS第一章 绪 论
  8. 2018重庆大学计算机学院复试,2018年重庆大学考研复试(回忆版)
  9. Origin 2019b安装
  10. asp.net+扫描仪+图片上传