def sift(iterable, predicate):
    """
    Sift an iterable into two lists, those which pass the predicate and those who don't.

    :param iterable:
    :param predicate:
    :return: (True-list, False-list)
    :rtype: tuple[list, list]
    """
    t_list = []
    f_list = []
    for obj in iterable:
        (t_list if predicate(obj) else f_list).append(obj)
    return (t_list, f_list)