基于函数将列表分割
根据给定的过滤函数的结果,将值分成两组。
- 使用列表推导式根据
fn
对每个元素返回的值将元素添加到组中。 - 如果
fn
对任何元素返回真值,则将其添加到第一组,否则将其添加到第二组。
def bifurcate_by(lst, fn):
return [
[x for x in lst if fn(x)],
[x for x in lst if not fn(x)]
]
bifurcate_by(['beep', 'boop', 'foo', 'bar'], lambda x: x[0] == 'b')
# [ ['beep', 'boop', 'bar'], ['foo'] ]