妙不可言!使用 Python 管道 Pipe 編寫(xiě)代碼如此優(yōu)雅!
大家好,今天這篇文章我將詳細(xì)講解 Pipe 如何讓你的代碼更加簡(jiǎn)潔的方法,喜歡本文歡迎收藏學(xué)習(xí)、點(diǎn)贊支持,文末提供技術(shù)交流群,歡迎交流
我們知道 map 和 filter 是兩種有效的 Python 方法來(lái)處理可迭代對(duì)象。 但是,如果你同時(shí)使用 map 和 filter,代碼可能看起來(lái)很混亂。
如果你可以使用管道那不是更好了?像下面這樣的方式來(lái)處理。
Pipe 庫(kù)可以做到這一點(diǎn)。
什么是管道?
Pipe 是一個(gè) Python 庫(kù),可讓你在 Python 中使用管道。 管道 (|) 將一種方法的結(jié)果傳遞給另一種方法。
我喜歡 Pipe,因?yàn)樗刮业拇a將多個(gè)方法應(yīng)用于 Python 可迭代對(duì)象時(shí)看起來(lái)更簡(jiǎn)潔。由于 Pipe 只提供了幾個(gè)方法,所以學(xué)習(xí)Pipe也很容易。 在本文中,我將向你展示一些我認(rèn)為最有用的方法。
要安裝Pipe,請(qǐng)輸入:
pip?install?pipe
Where:可迭代對(duì)象中的過(guò)濾元素
與 SQL 類似,Pipe 的 where 方法也可用于過(guò)濾可迭代對(duì)象中的元素。
Select: 將函數(shù)應(yīng)用于可迭代對(duì)象
select方法類似于map方法。 select 將方法應(yīng)用于可迭代的每個(gè)元素。
在下面的代碼中,我使用 select 將列表中的每個(gè)元素乘以 2。
現(xiàn)在,你可能想知道:如果 map 和 filter 具有相同的功能,為什么我們需要 where 和 select 方法?
這是因?yàn)槟憧梢允褂霉艿涝诹硪粋€(gè)方法之后插入一個(gè)方法。 因此,使用管道消除了嵌套的括號(hào)并使代碼更具可讀性。
展開(kāi)可迭代對(duì)象
1、chain方法
使用嵌套的可迭代對(duì)象可能會(huì)很痛苦。 幸運(yùn)的是,我們可以使用 chain 來(lái)鏈接一系列可迭代對(duì)象。
盡管應(yīng)用 chain ?可以使可迭代對(duì)象的嵌套較少,我們?nèi)匀恍枰粋€(gè)更強(qiáng)大的工具。 為了處理深度嵌套的列表,我們可以使用 traverse 代替。
2、traverse:遞歸展開(kāi)可迭代對(duì)象
traverse 方法可用于遞歸展開(kāi)可迭代對(duì)象。 你可以使用此方法將深度嵌套的列表轉(zhuǎn)換為平面列表。
讓我們將此方法與 select 方法集成以獲取字典的值并展平列表。
這樣處理是不是很酷?
將列表中的元素分組
有時(shí),使用特定函數(shù)對(duì)列表中的元素進(jìn)行分組可能很有用。 這可以通過(guò) groupby 方法輕松完成。
為了看看這個(gè)方法是如何工作的,讓我們把一個(gè)數(shù)字列表變成一個(gè)字典,這個(gè)字典根據(jù)數(shù)字是偶數(shù)還是奇數(shù)來(lái)分組。
在上面的代碼中,我們使用 groupby 將數(shù)字分組為偶數(shù)組和奇數(shù)組。 應(yīng)用此方法后的輸出如下所示:
[('Even',?0x7fbea8030550>),
?('Odd',?0x7fbea80309a0>)]
接下來(lái),我們使用 select 將元組列表轉(zhuǎn)換為字典列表,其鍵是元組中的第一個(gè)元素,值是元組中的第二個(gè)元素。
[{'Even':?[2,?4,?6,?8]},?{'Odd':?[1,?3,?5,?7,?9]}]
為了只獲取大于 2 的值,我們可以在 select 方法中添加 where 方法:
在這里插入圖片描述dedup 方法刪除列表中的重復(fù)項(xiàng)
這聽(tīng)起來(lái)可能并不有趣,因?yàn)?set 方法可以做同樣的事情。 但是,此方法更靈活,可以讓你獲取唯一元素。
例如,你可以使用此方法獲取一個(gè)小于 5 的唯一元素和另一個(gè)大于或等于 5 的唯一元素。
現(xiàn)在,讓我們將此方法與 select 結(jié)合起來(lái),從哪里獲取具有重復(fù)鍵和 None 值的字典的值。
在上面的代碼中,我們:
- 刪除具有相同名稱的項(xiàng)目
- 獲取計(jì)數(shù)值
- 只選擇整數(shù)值。
在幾行代碼中,我們可以將多個(gè)方法應(yīng)用于可迭代對(duì)象,同時(shí)仍然可以保持代碼整潔,不是嗎?
結(jié)論
剛剛我們學(xué)習(xí)了如何使用管道來(lái)保持代碼簡(jiǎn)潔簡(jiǎn)潔, 我希望這篇文章能讓你了解到可迭代對(duì)象上的復(fù)雜操作其實(shí)只需要一行簡(jiǎn)單的代碼。
參考鏈接:https://towardsdatascience.com/write-clean-python-code-using-pipes-1239a0f3abf5

●性能瓶頸在哪里?3 個(gè) Python 可視化工具搞定!
●一個(gè)都不少!數(shù)據(jù)分析中最有用的25個(gè) Matplotlib 圖
●Python處理CSV、JSON和XML數(shù)據(jù)的簡(jiǎn)便方法來(lái)了
長(zhǎng)按或掃描下方二維碼,后臺(tái)回復(fù):加群,可申請(qǐng)入群。一定要備注:入群+地點(diǎn)+學(xué)習(xí)/公司。例如:入群+上海+復(fù)旦。
感謝你的分享,點(diǎn)贊,在看三連??
