1. bifurcate
1
2
3
4
5
6
7
8
|
def bifurcate(lst, filter ): return [ [x for i, x in enumerate (lst) if filter [i] = = True ], [x for i, x in enumerate (lst) if filter [i] = = False ] ] # EXAMPLES bifurcate([ 'beep' , 'boop' , 'foo' , 'bar' ], [ True , True , False , True ]) # [ ['beep', 'boop', 'bar'], ['foo'] ] |
bifurcate
函數通過一個過濾器filter
定義的內容,將輸入列表lst分成兩組。將filter
中為True
的對應的lst
的項放入結果的第一個列表中,將filter
中為False
的對應的lst的項放入結果的第二個列表中。
2. enumerate
1
|
enumerate (iterable, start = 0 ) |
enumerate
函數接收一個可迭代對象,并返回一個迭代對象。該迭代對象每次迭代返回一個元組,該元組包括一個序號和接收的可迭代對象的迭代值。start
參數用于設定序號的初始值,默認為0。
示例使用為:
1
2
3
4
5
|
>>> seasons = [ 'Spring' , 'Summer' , 'Fall' , 'Winter' ] >>> list ( enumerate (seasons)) [( 0 , 'Spring' ), ( 1 , 'Summer' ), ( 2 , 'Fall' ), ( 3 , 'Winter' )] >>> list ( enumerate (seasons, start = 1 )) [( 1 , 'Spring' ), ( 2 , 'Summer' ), ( 3 , 'Fall' ), ( 4 , 'Winter' )] |
enumerate函數的實現邏輯相當于如下代碼:
1
2
3
4
5
|
def enumerate (sequence, start = 0 ): n = start for elem in sequence: yield n, elem n + = 1 |
3. 列表推導式
該函數使用列表推導式判斷lst
里面值對應位置的filter
的值,并生成對應的分組列表。
列表推導式的簡單介紹可以查看:Python 實現過濾掉列表中唯一值的章節。
到此這篇關于Python根據過濾器拆分列表的文章就介紹到這了,更多相關Python根據過濾器拆分列表內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://segmentfault.com/a/1190000040659274