詳解python數據結構和算法
1.刪除序列相同元素并保持順序
如果僅僅就是想消除重復元素,通常可以簡單的構造一個集合,利用集合之間元素互不相同的特性就可以消除重復,但是這種方法生成的結果中元素的位置會被打亂。下面是我們的解決方案:
主要思想就是構造一個集合,然后遍歷該列表,如果當前元素不存在集合中就將該元素返回。
yiled時python中構造生成器的關鍵字。碰到yiled就返回該變量,下一次則從yiled之后的語句開始執行。
使用示例:
注:我們構造的dedupe函數返回的是生成器對象,需要用list轉化成可直接輸出的列表。
該函數也可以用來文件去除重復行:
2.過濾元素序列
問題--------你有一個數據序列,想利用一些規則從中提取出需要的值或者是縮短序列
方法一:最簡單的過濾序列元素的方法就是使用列表推導。比如我們想從下列列表中提取正數:
方法二:生成器迭代
使用列表推導的一個潛在缺陷就是如果輸入非常大的時候會產生一個非常大的結果集,占用大量內存。 如果你對內存比較敏感,那么你可以使用生成器表達式迭代產生過濾的元素。
運行結果:
方法三:過濾規則比較復雜,不能簡單的在列表推導或者生成器表達式中表達出來時需要考慮使用內建的filter函數。這時候你可以將過濾代碼放到一個函數中, 然后使用內建的 filter() 函數。示例如下:
以上所述是小編給大家介紹的python數據結構和算法詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對好吧啦網網的支持!
相關文章:
1. Android 7.0 運行時權限彈窗問題的解決2. IntelliJ Idea2017如何修改緩存文件的路徑3. IDEA的Mybatis Generator駝峰配置問題4. java實現圖形化界面計算器5. javascript設計模式 ? 建造者模式原理與應用實例分析6. Python使用oslo.vmware管理ESXI虛擬機的示例參考7. 解決idea中yml文件不識別的問題8. IntelliJ IDEA設置條件斷點的方法步驟9. Spring-Richclient 0.1.0 發布10. IIS Express 取代 ASP.NET Development Server的配置方法
