首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python工匠:数字与字符串(上)

但初次接触代码的你可能需要花费一整个下午,才能弄懂它们的含义。 问题就出在那几个数字字面量上。 最初写下这个函数的人,可能是在公司成立之初加入的那位元老程序员。而他对那几个数字的含义非常清楚。...但如果你是一位刚接触这段代码的新人,就完全是另外一码事了。 使用 enum 枚举类型改善代码 那么,怎么改善这段代码?最直接的方式,就是为这两个条件分支添加注释。...但是这样做最大的问题在于:随着函数逻辑变得更复杂,这段拼接代码会变得容易出错、难以扩展。事实上,上面这段 Demo 代码也只是仅仅做到看上去没有明显的 bug 而已 (谁知道有没有其他隐藏问题)。...其实,对于 SQL 语句这种结构化、有规则的字符串,用对象化的方式构建和编辑它才是更好的做法。...所以,当你的代码中出现复杂的裸字符串处理逻辑时,请试着用下面的方式替代它: Q: 目标/源字符串是结构化的,遵循某种格式吗?

59340

像这样操作 Python 列表,能让你的代码更优雅 | pythonic 小技巧

写 Python 代码,列表的出镜率是相当高的,伴随列表一起出现的往往就是一大堆 for 循环,这样的代码多了看起来非常不简洁。作为一名 Python 程序员,怎么能忍受呢? 那有没有什么好办法呢?...除了列表表达式之外,其实还有一些小技巧来操作列表,可以使代码更简洁,更优雅。下面介绍几个常见的使用场景,分享给大家。 一、列表合并 第一种方式:循环。...>>> a.extend(b) >>> a [1, 2, 3, 4, 5, 6] 后两种方式明显更加优雅,推荐使用。需要说明的一点是,如果列表很大的话,+ 会比较慢,使用 extend 更好。...如果想要知道列表中所有元素的出现次数,那么可以使用 collections 模块。collections 是 Python 中的一个宝藏模块,它提供了很多特性。...Counter 方法正好可以完美解决这个需求。

62810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python 高手都这样使用字典,这些高效方法你知道吗?|pythonic 小技巧

    可见其有多重要,不用多说,我平时用的也很多,索性总结一下,把一些常用的方法写下来,分享给大家。...一、字典创建 # 1、创建空字典 a = {} b = dict() # 2、有初始值,从输入的便利程度来说,我更喜欢第二种 a = {'a': 1, 'b': 2, 'c': 3} b = dict...(a=1, b=2, c=3) # 3、key 来自一个列表,而 value 相同, 使用 fromkeys,那是相当的优雅 keys = ['a', 'b', 'c'] value = 100 d...取值,但这种方式不好,如果 key 不存在会报错,推荐使用 get a = d['a'] # 2、使用 get,如果 key 不存在还可以赋默认值 a = d.get('a') c = d.get('...就是有一个列表,列表的元素是字典,然后按字典的 value 对列表进行排序。

    1.1K20

    简书markdown教程

    为了说明哪些条目属于这个列表,我们需要引入“项目标记”。 列表项目标记通常放在段落开头,后面要跟着一个空格。列表的各个条目之间可以不留空行。 若列表中的条目没有特定顺序时,可以使用 无序列表。...###代码引用 需要引用代码时,如果引用的语句只有一段,不分行,可以用 ` 将语句包起来。 如果引用的语句为多行,可以将```置于这段代码的首行和末行。 代码引用的案例截图: ?...A: 许多 Markdown 编辑器都不是所见即所得的——“所见即所得”是指你对格式的修改会马上反映在屏幕上,就像 Word 那样。如果你的编辑器没有没有实时预览功能,就不会看到格式的变化。...Macdown和简书 都支持实时预览,你需要先打开这个功能,才能看到这些格式标记的效果。 ---- Q: Markdown 可以排版表格吗? A: 可以,如果你熟练的话,排版表格也会很快。...A: 同样和解释 Markdown 标记的方式有关。更多信息,请看“4 扩展阅读”部分。 ---- Q: Markdown 段落开头不能空两格,看着很难受啊。有办法解决吗?

    3K11

    实战 LeetCode 15.三数之和、18.四数之和,并扩展至 N 数之和

    但是这类题目还有一种解法,叫做双指针,说实话,我刚开始做的时候也是完全不懂,但是自己做完后查看别人写的优秀代码后,发现双指针不仅代码优雅,而且非常高效。...0,continue if nums[i] + nums[-1] + nums[-2] < 0: continue # 如果当前这个数等于前一个数...,那么有没有一种通用的方法呢? 当前的方法也可以,不过需要事先确定 N,如果 N 不确定的话,就没办法了。 这个时候递归就派上用场了,而且同样可以使用双指针。...总结 双指针是比较经典的一种方法,使用得当的话不仅可以写出优雅的代码,而且效率也很高。 如果觉得自己已经理解了的话,可以去 LeetCode 上实际写下。看看自己到底有没有掌握。...LeetCode 上更多的关于双指针的题目链接: https://leetcode-cn.com/tag/two-pointers/ 如果有其他问题的话,可以在公众号底部找到我的联系方式,一起交流。

    1.6K20

    三分钟学 Go 语言——函数深度解析(下) 可变参数

    func 函数名(固定参数,v ...T) (返回参数列表){ 函数体 } 怎么用?...上一节我们已知参数类型是int,还记得我们前面说过的switch判断类型做处理的例子吗?switch和type switch。 参考这个例子重写下函数,让他可以接收任意类型的参数。...,如果一个一个类型的匹配会疯掉的。...,再用格式化输出转换成字符串,最后转换成float64来使用,这是一种折中的办法,速度可能会比较慢(因为格式化内部逻辑比较复杂消耗速度)。...为了保证速度还是不要省掉一大堆的case,明确了类型再做强转。 留给你的寻找的答案 有没有一种只留一个case,同时处理速度又快的方法呢? —— 爱你们的小熊

    66810

    优秀的程序员真的不写注释吗?

    动不动就骂别人是“禽兽”,我总觉得有点不妥,这很不符合孟子的浩然之气啊。有些大牛也有孟子这样的觉悟,如果有人要他给自己的代码加上注释,就好像是对他的一种侮辱:“我的代码写得这么优雅,你难道看不懂吗?...因为我刚接手了别人留下的一个项目,关于大宗期货交易的。后端代码是用 Java 写的,但有很多 bug 在里面,动不动就资金结算失败,甚至内存溢出,要解决这些问题,只有一个办法,就是彻底搞懂这些代码。...凭良心说,前同事留下的代码是精彩绝伦的,如果换做是我来写,真不一定能写得出来。毕竟大宗期货交易本身还是有点难度的,需要竞价撮合,这个业务理解起来比股票还要复杂些。 股票涨了就赚,跌了就亏。...在追求卓越的路上,代码和注释其实是相辅相成的。注释会让你的代码更易阅读,代码会让你的注释更富有逻辑。 即便是你的代码已经优雅到不需要注释,那只是在你的层面上。...另外,我想说一句,注释就好像是代码的一个蓝图,也或者是对代码的一个总结。在你写代码之前,脑子里肯定要想清楚你要实现什么,怎么实现,把这些作为注释写下来绝对可以帮助你写出更优雅的代码。

    65010

    “kill -9”一时爽,秋后算账泪两行

    不过,如果把命令名字改了,效果也许会更好。因为在Linux上,kill根本就不是杀死的意思。 它只是想要给进程发送一个信号而已。使用kill -l可以看到长长的信号列表。 ?...kill -9直接使得优雅关闭这个名词成了废物。 何为优雅关闭?其实就像是人的“遗言”,要在死之前,交代一些身后事。 我就常常在想,在我死之前,要把所有的钱花的一分不剩。....addShutdownHook( new Thread(() -> System.out.println("Do something in Shutdown Hook"))); ---- 有没有好的办法...有,用kill -15发送SIGTERM信号即可。 但有时候kill -15并不能杀死进程,这个时候,才是kill -9需要出场的时候。 听够了15临死前说的一些废话,使用9要它的命。...如果jstack对你的应用不好使了,或者应用几乎没有响应了。使用kill -3是一种曲线救国的方式。 其实是JDK屏蔽了这个信号,对Java来说是一个福利。我们在JDK的文档中找到相关介绍。

    66430

    虐面试官系列Lifecycle篇 - (2)源码分析之 Event & State

    又是很久很久没写文章了,最近打算写下Android的又一基础知识: Android 官方架构组件系列。...,而Event是Lifecycle接下去的动作值 (PS:简单可以理解为房东有二种状态值,一种是具体的房价价格,比如定了房子卖10000一平米,还有一种是动作值,比如涨价1000元一平米,这么简单的类比就更好理解了...我们具体来看下这个问题: 如果正常的画图,我估计大家肯定都是画成: 上面这个图估计大家也都看得懂,没有任何问题,因为是横向链条结构,我们可以让它弯曲,这样图片就不会太长了,我们来画第二个图: 没错,...当前我们把上面的具体的Event值一一对应,比如ON_RESUME 对齐 ON_PAUSE, ON_CREATE 对齐 ON_DESTORY,但是我们的State的值实在是太多了,有没有办法改变一下??...onStop 更改为onCreate也是一样的道理 所以图片也就变成了: 最后为了对称好看,我们上下用红色的补全了相关缺的地方: 我们拿着我们的图,和Android官方的图比较一下看看是不是一样:

    50240

    Python基础—让你规范Python语言的使用

    列表推导(List Comprehensions) 定义: 列表推导(list comprehensions)与生成器表达式(generator expression)提供了一种简洁高效的方式来创建列表和迭代器...同时, Python也不支持重载方法和函数, 默认参数是一种”仿造”重载行为的简单方式. 缺点: 默认参数只在模块加载时求值一次. 如果参数是列表或字典之类的可变类型, 这可能会导致问题....属性(properties) 定义: 一种用于包装方法调用的方式. 当运算量不大, 它是获取和设置属性(attribute)的标准方式....注意: 当你写下 if x: 时, 你其实表示的是 if x is not None . 例如: 当你要测试一个默认值是None的变量或参数是否被设为其它值. 这个值在布尔语义下可能是false!...一个使用这个特性的例子: 优点: 通常可以带来更加清晰, 优雅的代码. 尤其会让有经验的Lisp和Scheme(还有Haskell, ML等)程序员感到欣慰. 缺点: 可能导致让人迷惑的bug.

    1.6K80

    虐面试官系列Lifecyele篇 - (2)源码分析之 Event & State

    打算把相关的知识点都整理写下,所以本系列的主体为Lifecycle. ? ? ?...,而Event是Lifecycle接下去的动作值 (PS:简单可以理解为房东有二种状态值,一种是具体的房价价格,比如定了房子卖10000一平米,还有一种是动作值,比如涨价1000元一平米,这么简单的类比就更好理解了...很多人讲解文章就理所当然的就说有这么XXXX的值,如果让你写Lifecycle源码,你又是否会设计成这样,设计成这几个值??? 我们具体来看下这个问题: 如果正常的画图,我估计大家肯定都是画成: ?...没错,当前我们把上面的具体的Event值一一对应,比如ON_RESUME 对齐 ON_PAUSE, ON_CREATE 对齐 ON_DESTORY,但是我们的State的值实在是太多了,有没有办法改变一下...最后为了对称好看,我们上下用红色的补全了相关缺的地方: ? 我们拿着我们的图,和Android官方的图比较一下看看是不是一样: ?

    41320

    5个提升开发效率的必备自定义 React Hook,你值得拥有

    那么,有没有一种简单的方法,可以让我们优雅地处理这个问题呢? 问题与需求 假设我们有一个用户信息表单,需要用户输入姓名并且希望在用户再次访问时保留这个信息。...直接写CSS媒体查询虽然可以实现,但在React中管理这些逻辑显得不够优雅和灵活。那么,有没有一种更好的方法呢?...3、用useDebounce优化你的React应用 在日常开发中,我们经常需要处理用户输入或频繁的API请求,这些操作如果不加控制,可能会导致性能问题或者不必要的资源浪费。如何优雅地解决这个问题呢?...如果每次都手动编写fetch逻辑,不仅代码冗长,而且容易出错。有没有一种方法可以简化这个过程,同时处理好加载状态和错误呢?...如果每次都手动编写状态切换逻辑,不仅代码冗长,还容易出错。有没有一种方法可以简化这个过程呢?

    17110

    软件开发中几种华丽无比的开发方式

    今天我要说的,是几种看起来激动人心、华丽无比,但是可以让程序员们痛苦不堪的开发方式,特别适合那些热衷于折磨虐待程序员的项目经理和产品经理们。当然,掌握以后,偷偷用就好了,请不要来感谢我。...题图 from unsplash 进度驱动开发(SDD,Schedule Driven Development) 这是在国内最为流行的开发方式,大家心照不宣,口口相交,代代相传,我只是把它写下来而已。...指标驱动开发(IDD,Indicator Driven Development) 这种开发方式的华丽,源于它超强的数据化和量化的能力。写代码的目的是什么?完成需求?优雅设计?用户体验?你全错了。...更重要的是,项目成功了。 装逼驱动开发(ZDD,Zhuangbility Driven Development) 这大概是几种开发方式中最华丽的一种。...装逼是指导软件开发的重要思想 。 其实还有很多其他华丽无比的开发方式,比如会议驱动开发(MDD),Demo 驱动开发(DDD)等等,但这几种是最常见的。如果你知道更华丽的开发方式,请告诉我。

    49820

    几种华丽无比的开发方式

    今天我要说的,是几种看起来激动人心、华丽无比,但是可以让程序员们痛苦不堪的开发方式,特别适合那些热衷于折磨虐待程序员的项目经理和产品经理们。当然,掌握以后,偷偷用就好了,请不要来感谢我。...进度驱动开发(SDD,Schedule Driven Development) 这是在国内最为流行的开发方式,大家心照不宣,口口相交,代代相传,我只是把它写下来而已。...指标驱动开发(IDD,Indicator Driven Development) 这种开发方式的华丽,源于它超强的数据化和量化的能力。写代码的目的是什么?完成需求?优雅设计?用户体验?你全错了。...更重要的是,项目成功了。 装逼驱动开发(ZDD,Zhuangbility Driven Development) 这大概是几种开发方式中最华丽的一种。...装逼是指导软件开发的重要思想。 其实还有很多其他华丽无比的开发方式,比如会议驱动开发(MDD),Demo 驱动开发(DDD)等等,但这几种是最常见的。如果你知道更华丽的开发方式,请告诉我。

    33310

    Service层的接口是不是多此一举?

    如果开发人员想在下层逻辑没有完成的情况下,先开发上层逻辑,可以先编写下层类的空方法来先完成上层的逻辑。...第一种方式,是在Service中新增一个包,在里面编写新的逻辑,然后修改配置文件,将新实现作为注入对象。...Controller Service ---- 接口在一个包中 impl ---实现在另一个包里 Service2 impl2 ---新实现在另一个包里 Dao 相对而言,实际第一种方式相对更简单一点,...不过,从结构上来看,实际方式二的结构要比方式一的结构更清晰,因为从模块上能区分逻辑。 那有没有办法来结合两者的优点呢?答案是肯定的,而且操作起来也不复杂!...所以,如果一个项目需要多实现、且多实现数量较多(不过一般项目不会有多个实现的),则推荐使用接口。否则不需要使用接口。 总结 本文针对「Service层是否需要接口」这个问题,指出需要接口的理由的问题。

    92410

    MarkText, 比肩Typora的开源markdown编辑器

    如果你曾经像我一样, 经历过毕业论文, 把绝大部分时间花费在格式及样式的调整上, 比如字体, 大小, 缩进等, 就一定明白, 如果有一种能让你专注于只编写内容, 而不是需要去关注格式的东西, 你一定会非常喜欢的...其简洁、易读的语法使得编写和编辑文档变得简单而高效。 如果你经常写内容, 还在使用Word等方式, 或者甚至还没有使用过Markdown, 那我建议你应该要以去了解及尝试使用Markdown....于是我就想起来写下这篇文章 MarkText 可能是我个人的偏好, 对Markdown格式支持的软件, 我个人更喜好所见即所得的编写模式, 让我更有一种编写的沉浸感. Typora就是这样一款工具....基于electron开发的最著名软件是Visual Studio Code了. 正因为基于electron, 所以不管你用的是哪个操作系统, 都可以使用MarkText这个软件....推荐 如果你也喜欢用markdown, 也想用找一款开源的所见即所得的编写软件, 那MarkText也是一款值得你关注与尝试的工具.

    41210

    Github gist_github教程

    如果您听说过类似Pastebin或者 Pastie这样的web应用的话,那您就可以看到它们和Gist很像,但是Gist比它们要更优雅。因为这些免费应用一般含有广告,而且带有很多其他杂 七杂八的功能。...Gist – 任何人都能用得着 如果您不是极客您可以按照如下方式使用Gist: 1. 匿名张贴 您不需要拥有Github账号就可以使用Gist。...用浏览器打开http://gist.github.com,在窗口中写下你想说的就可以创建一个Gist。...制作任务列表 您可以用Gist跟踪待处理任务(举个栗子)。这是用纯文本的特殊语法写的但是你可以任意勾选。...如果您的Gist是公有的的话,任何人都可以看到您的列表,但是只有您(拥有者)可以改变其勾选状态。 备注:其实任务列表也可以在issue中建立,所有拥有写权限的人都可以uncheck/check。

    2K10

    讨论:Service层的接口是不是多此一举?

    如果开发人员想在下层逻辑没有完成的情况下,先开发上层逻辑,可以先编写下层类的空方法来先完成上层的逻辑。...第一种方式,是在Service中新增一个包,在里面编写新的逻辑,然后修改配置文件,将新实现作为注入对象。...Controller Service ---- 接口在一个包中 impl ---实现在另一个包里 Service2 impl2 ---新实现在另一个包里 Dao 相对而言,实际第一种方式相对更简单一点,...不过,从结构上来看,实际方式二的结构要比方式一的结构更清晰,因为从模块上能区分逻辑。 那有没有办法来结合两者的优点呢?答案是肯定的,而且操作起来也不复杂!...所以,如果一个项目需要多实现、且多实现数量较多(不过一般项目不会有多个实现的),则推荐使用接口。否则不需要使用接口。 总结 本文针对「Service层是否需要接口」这个问题,指出需要接口的理由的问题。

    75430

    看过就忘?学完就丢?因为你没有理清编程思路!

    编程思路是一个挺大的概念,如果想要完全掌握它,那么需要我们长期的积累,来把思路分析的方式变成一种本能。这是一个长期积累的过程,没有办法一撮而就。...对于这么一种情况,那么我们很有可能就会处于一种不知如何下手的状态,如果我们真的面对这么一种状态的话,那么我们所需要做的第一件事就是尽快突破这种状态,也就是 “写下第一行代码” 。...那么当我们遇到不会的知识点时,我们应该如何处理呢?我们把基本的处理方式给大家列举一下(因为对于知识点来说,太多太杂,如果通过单一事例可能会比较片面没有办法带来好的效果)。 1....在 “写下第一行代码” 的时候,如果不知道如何写,那么可以通过 倒推 和 “拆解” 的方式,来帮助我们梳理思路。 在当我们遇到复杂业务需求的时候, 倒推 和 “拆解” 的方式依然可以帮助到我们。...而当我们按照思路编写程序的时候,如果遇到不会的知识点,不要着急否定思路,先去尝试看看有没有解决的办法。比如可以通过搜索引擎,或者对复杂知识点进行 倒推 和 “拆解”的方式来解决。

    99131
    领券