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

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

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

58840

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

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

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

    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 对列表进行排序。

    1K20

    简书markdown教程

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

    2.9K11

    实战 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,同时处理速度又快方法呢? —— 爱你们小熊

    66310

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

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

    63910

    “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文档中找到相关介绍。

    65930

    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.5K80

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

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

    47840

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

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

    13410

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

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

    40620

    几种华丽无比开发方式

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

    32710

    MarkText, 比肩Typora开源markdown编辑器

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

    36810

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

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

    89210

    Github gist_github教程

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

    1.9K10

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

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

    49420

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

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

    75130

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

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

    97731
    领券