文章授权转载自 Python与算法之美,粗体文字为生信宝典的修改和补充。文后有生信宝典原创的系列Python学习教程(Python2和Python3)。
一 优雅你的Jupyter
1,更改Jupyter Notebook初始工作路径
平凡方法:在cmd中输入jupyter notebook --generate-config,
然后找到生成的配置文件jupyter_notebook_config.py,在其中加入一条语句:
c.NotebookApp.notebook_dir =
'F:\我的坚果云\PythonFiles'
优雅方法:新建文本文件,在其中输入以下内容:
F: cd F:\我的坚果云\PythonFiles jupyter notebook pause
保存后将文件重命名为jupyter.cmd (jupyter.bat也可以),双击该文件即可。
2,获取函数帮助
平凡方法:help()。
优雅方法:光标移动至函数名右侧 (或选中函数名),按住Shift + Tab键弹出帮助文本框。
3,修改多处的同一标识符名字
平凡方法:逐个修改。
优雅方法:按住Ctrl鼠标移动光标同时选中多处编辑位置,启动多行编辑。(Jupyter也可以加一个插件,开启vim模式,自由替换,见Python文学化编程 - Jupyter notebook使用和插件拓展)。
二,优雅你的赋值语句
4,为多个变量赋值
平凡方法:逐一赋值。
优雅方法:使用元组语法同时赋值。
5,序列解包
平凡方法:使用下标访问逐一赋值。
优雅方法:序列自动解包。
6,对象方法的嵌套
平凡方法:定义中间变量,不嵌套。
优雅方法:使用对象方法嵌套,减少中间变量。
三,优雅你的判断语句
7,单行if语句:if...else...三目运算符
平凡方法:使用普通需要换行的if...else...语句。
优雅方法:使用单行if语句:if...else...三目运算符。(三目运算符不太推荐)
8,区间判断
平凡方法:使用and连接两次判断。
优雅方法:使用链式判断。
9,判断是否为多个取值之一
平凡方法:使用or连接多次相等判断。
优雅方法:使用关键字in。(set和dict的查询速度是O(1),很快的,具体见为啥我的Python这么慢 - 项查找 (二))
10,判断是否为空列表,空字典,空字符串
平凡方法:使用len函数判断长度是否大于0。
优雅方法:利用隐含类型转换直接判断。
11,判断诸多条件是否至少有一个成立
平凡方法:使用or连接多次判断。
优雅方法:使用any函数。(R也有类似用法,R学习见ggplot2高效实用指南 (可视化脚本、工具、套路、配色))
12,判断诸多条件是否全部成立
平凡方法:使用and连接多次判断。
优雅方法:使用all函数。
四,优雅你的循环语句
13,单行循环语句:推导式
平凡方法:使用普通for循环。
优雅方法:使用推导式:[... for .... in ... if ... ]。(列表解析和字典解析很常用)
14,同时遍历序列的元素和元素下标
平凡方法:遍历下标,并用下标访问元素。
优雅方法:使用enumerate函数生成下标和元素对。
15,显示循环进度
平凡方法:直接不断print下标。该方法容易导致输出刷屏。
优雅方法:print下标后设置不换行并使用‘\r’回车到行首以避免输出刷屏。(\r的妙用,回车不换行)
优雅方法加强版:定义progress_bar函数,直观显示进度条。
五,优雅你的函数
16,使用lambda匿名函数实现简单的函数
平凡方法:使用def关键字定义函数。
优雅方法:使用lambda匿名函数。
17,使用yield生成器收集系列值
平凡方法:在函数中直接用列表收集系列值。
优雅方法:使用yield生成器收集系列值。生成器具有惰性计算特点,被迭代才逐个计算输出值。
18,使用装饰器给函数添加插入日志,性能测试等非核心功能
平凡方法:将插入日志,性能测试等非核心功能直接内嵌到函数定义中。
优雅方法:使用装饰器扩展函数的非核心功能。装饰器函数可以一次定义,到处装饰。(装饰器值得好好学习)