文章授權轉載自 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,使用裝飾器給函數添加插入日誌,性能測試等非核心功能
平凡方法:將插入日誌,性能測試等非核心功能直接內嵌到函數定義中。
優雅方法:使用裝飾器擴展函數的非核心功能。裝飾器函數可以一次定義,到處裝飾。(裝飾器值得好好學習)