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