用于Ruby Enumerable .partition方法的Python模拟

时间:2012-09-12 11:57:25

标签: python ruby standard-library

  

可能重复:
  python equivalent of filter() getting two output lists (i.e. partition of a list)

是否有任何内置函数或python标准库中的某些模块,它模拟来自Ruby的Enumerable.partition行为并且只迭代一个对象一次以获得基于传递的谓词函数的两个列表/元组?< / p>

1 个答案:

答案 0 :(得分:0)

this question无耻地偷走 - 您可以使用tee中的itertools功能:

from itertools import tee

def split_on_condition(seq, condition):
    l1,l2 = tee((condition(item),item) for item in seq)
    return (i for p, i in l1 if p), (i for p, i in l2 if not p)