python高级编程知识点_(转)python 高级编程技巧学习笔记
轉自https://www.jianshu.com/p/104cec085611,部分圖出不來,mark一下,關鍵時候供查看。
第二章 數據結構相關話題
2.1、篩選數據
兩種方式
filter函數:filter(lambda x: x>0, data)
注意:python3 需要把filter的結果轉為list ,也就是list(filter(lambda x: x>0, data))
加條件的遍歷: [ x for x in data if x > 0 ]
如果想轉成集合,就把[]改成{}
2.2、如何為元組的每個元素命名
使用元組的好處:減少存儲開銷
缺點:使用索引訪問元素,降低程序可讀性
解決方案:
1、定義一系列數值常量
NAME, AGE, SEX, EMAIL = range(4)
2、使用標準庫中的collections.namedtuple替代內置tuple
2.3、如何統計序列中出現的頻度
解決方案:使用collections.Counter對象
將序列傳入Counter的構造器,得到Counter對象是元素頻度的字典
Counter.most_common(n)方法得到頻度最高的n個元素的字典
2.4、如何根據字典中值的大小,對字典進行排序
解決方案:使用內置函數sorted
2.5、如何快速找到多個字典的公共鍵
案例:統計每輪比賽都有進球的球員
解決方案:利用集合的交集操作
1、使用字典的viewkeys()方法,得到一個字典keys的集合
2、使用map函數,得到所有字典的keys的集合
3、使用reduce函數,取所有字典的keys的集合的交集
2.6、如何讓字典保持有序,也就是遍歷的時候按插入順序打印
解決方案:使用collections.OrderedDict
以OrderedDict代替內置字典dict,依次將數據存入OrderedDict
2.7、如何實現用戶的歷史記錄功能(最多n條)
解決方案:使用容量為n的隊列容量存儲歷史記錄
使用標準庫collections中的deque,它是一個雙端循環隊列
程序退出前,可以使用pickle將隊列存入文件,再次運行時將其導入。
第三章 迭代器
3.1、如何實現可迭代對象和迭代器對象
可迭代對象需要有iter方法,這個方法返回迭代器對象。
而迭代器對象則要有next()
3.2、如何使用生成器函數實現可迭代對象
yield關鍵字
yield 是一個類似 return 的關鍵字,只是這個函數返回的是個生成器
當你調用這個函數的時候,函數內部的代碼并不立馬執行 ,這個函數只是返回一個生成器對象
當你使用for進行迭代的時候,函數中的代碼才會執行
3.3、 如何進行反向迭代以及如何實現反向迭代
解決方案:
1、使用內置函數reversed()方法
2、實現反向迭代協議的 __reverse 方法,它返回一個反向迭代器
3.5、 如何對迭代器做切片操作
解決方案:使用標準庫中的itertools.islice,它能返回一個迭代對象切片的生成器
3.6、如何在一個for語句中迭代多個可迭代對象
解決方案:
并行:使用內置函數zip,它能將多個可迭代對象合并,每次迭代返回一個元組
串行:使用標準庫中的itertools.chain,它能將多個可迭代對象連接
第四章 字符串處理
4.1、如何拆分含有多種分隔符的字符串
解決方案:
1、連續使用str.split()方法,每次處理一種分隔符
2、使用正則表達式的re.split()方法,一次性拆分字符串
4.2、如何判斷一個字符串是以b開頭或結尾
解決方案:
使用字符串的str.startswith()和endswith()方法。注意:多個匹配時參數使用元組。
4.3、如何調整字符串中文本的格式
解決方案:
使用正則表達式re.sub()方法做字符串替換,利用正則表達式的捕獲組,捕獲每個部分內容,在替換字符串中調整各個捕獲組的順序
4.4、如何將多個小字符串拼接成一個大字符串
解決方案:
方法一:迭代列表,使用‘+’連接字符串
方法二:使用str.join()方法,更加快速的拼接列表的字符串
4.5、如何對字符串進行左中右對齊
解決方案:
1、使用字符串的str.ljust(), str.rjust(), str.center()進行左中右對齊
2、使用format()方法,傳遞類似‘<20’, '^20', '>20'參數
4.6、如何去掉字符串中不需要的字符
解決方案:
1、字符串strip(), lstrip(), rstrip()去掉字符串兩端字符
2、刪除單個固定位置的字符,可以使用切片 + 拼接的方式
3、字符串的replace方法或正則表達式re.sub()刪除任意位置字符
4、字符串translate()方法,可以同時shanchu刪除多種不同字符
第五章 文件處理
5.1、如何讀寫文本文件(py2和py3區別)
字符串的語義發生變化
py2 py3
str ---> bytes
unicode ----> str
解決方案:
py2 寫入文件前對unicode編碼,讀入文件后對二進制解碼
py3 open函數指定‘t’的文本模式,encoding指定編碼格式
5.2、如何處理二進制文件
解決方案:
open函數以二進制模式打開文件,指定mode為‘b’
二進制文件可以用readinto,讀入到提前分配好的buffer中,便于數據處理
解析二進制文件可以用標準庫中的struct模塊的unpack方法
5.3、如何設置文件的緩沖
解決方案:設置open函數的buffering參數
1、全緩沖,buffering設置為大于1的整數n,n為緩沖區大小
2、行緩沖,buffering設置為1,遇到換行符\n就停止緩沖
3、無緩沖,buffering設置為0
5.4、如何將文件映射到內存
解決方案:使用標準庫mmap模塊中的mmap()函數,它需要一個打開的文件描述符作為參數
5.5、如何訪問文件的狀態
解決方案:
1、系統調用,標準庫中os模塊下的三個系統調用stat, fstat, lstat獲取文件狀態
2、快捷調用,標準庫中os.path下一些函數,使用起來更加簡潔(沒有文件 訪問權限的函數)
5.6、如何使用臨時文件?
解決方案:使用標準庫中tempfile下的TemporaryFile, namedTemporaryFile
第六章 數據處理
6.1、如何讀寫CSV數據
解決方案:使用標準庫中的CSV模塊,可以使用其中reader和writer完成CSV讀寫
6.2、如何讀寫json數據
解決方案:使用標準庫中的json模塊,其中loads,dumps函數可以完成json數據的讀寫
6.3、如何讀寫Excel文件
解決方案:使用第三方庫xlrd和xlwt,這兩個庫分別用于Excel讀和寫
總結
以上是生活随笔為你收集整理的python高级编程知识点_(转)python 高级编程技巧学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无创血糖检测新技术,OpenAI CEO
- 下一篇: 在闲鱼APP中如何同意买家的退款申请