本文邀請pany來回答,以下是他基于工作經驗羅列出來的關于python的一些實用知識點和小技巧,希望對你有所幫助~
文章不旨在概念的介紹和深挖,或者酷炫的第三方庫介紹。更多是站在實用性角度簡明快速羅列自認為頗為有用的知識點或者技巧。為提高代碼的效率或可讀性,便利性等添磚加瓦。經驗之談,歡迎交流和拍磚。字符串字符拼接,join。
這里需要強調下,任何字符相關的可迭代對象都可以使用join。除了set,tuple外,類句柄對象同樣可以使用join。
關鍵字格式化
除了我們常用的 %s進行格式化外,其實還可以按照關鍵字格式化,對于比較多變量時的情況,有利于提高代碼的可讀性。
當然 format可以類似地
行分割
字符分隔
split(rsplit)其實時有第二個參數的,表示按順序分隔幾次,類似 ‘指定數目的非貪婪分隔’
內容重復的字符串
多行縮進處理
標準庫的textwrap.dedent 可以刪除源文本中各行行首的共同縮進部分
標準庫textwrap還有其他一些方法處理文本格式,例如fill 設定行寬度和首行縮減,indent 添加行前綴等等。
字典setdefault
給字典設置(增加)新的鍵,存在就不設置(獲取當前key對應的值),不存在就設置并返回當前key對應的值
update,更新字典
fromkeys(seq [, value])
創建一個新字典,序列seq的元素為鍵,value為字典所有鍵對應的初始值(不指定為None)。
類似的功能其實也可以通過defaultdict來實現,后面會舉例。
標準庫collections 的 defaultdict 和 OrderedDict
defaultdict類接受一個類型作為參數,當所訪問的鍵不存在的時候,可以實例化一個指定類型空值作為默認值
統計詞頻
defaultdict類還使用任何不帶參的函數,該函數的返回值作為默認值,這樣可以實現多層key默認值的指定。
所以defaultdict可以覆蓋setdefault的使用場景,人傾向使用defaultdict,更加方便簡潔
模仿 fromkeys
OrderedDict
python的字典是無序的, OrderedDict可以保留key的順序信息
OrderedDict的Key會按照插入的順序排列
json化后可以保留順序
列表生成式
生成式中的判斷
生成式多層嵌套
但是多層生成式不推薦過度使用,可能會導致可讀性更差。列表的索引有不少靈活的用法:
元素重復的序列
* 運算符可生成 元素重復的序列
在for循環中一同拿到索引和元素
其實 enumerate 函數的可使用范圍也包括所有的可迭代對象
例如文件句柄
在列表中查找
除了使用index()方法返回查找元素的索引外。對于復雜點的元素可以使用生成器及其next方法
Set集合生成式
實際上{1,2,3} 相當于 set([1,2,3])
set支持 len in join
刪除元素: remove 和 discard
二者的區別在于,如果被指定刪除的不存在時 remove 會拋出KeyError異常,而discard則不會
對集合添加多項
集合運算
推薦使用運算符而不是set方法函數,運算符看起來更簡潔,有更好的可讀性
如果讀完此文對你有幫助,請點個贊或者轉發讓更多人知道哦~