def parallel_filter(condition, *lists):
    '''
    
    Parallelly filter multiple lists.
    
    Parameters
    ----------
    condition: callable
        A function, which has as many arguments as the number of lists
    lists: list of list

    Returns
    -------
    filtered_lists:
        Filtered accordingly some criterion

    '''

    # TODO: check length

    if isinstance(lists[0], list) and len(lists) == 1:
        lists = lists[0]

    output = [[] for _ in xrange(len(lists))]

    for d in zip(*lists):
        if condition(*list(d)):
            multi_append(output, *list(d))
            print output

    return output

@@ -1,8 +1,114 @@
+%0Adef multi_append(list_of_lists, *elems):%0A    for l, e in zip(list_of_lists, elems):%0A        l.append(e)%0A%0A
 def para
@@ -703,32 +703,8 @@
 ))%0A 
-           print output%0A
 %0A   

Update filtering.py