# multirember&co

Anton Vredegoor anton.vredegoor at gmail.com
Fri Apr 20 18:02:10 CEST 2007

```Anton Vredegoor wrote:

> from collections import deque
>
> def xsplitter(seq, pred):
>      Q = deque(),deque()
>      it = iter(seq)
>      def gen(p):
>          for x in it:
>              if pred(x) == p:
>                  Q[p].append(x)
>                  while Q[p]:  yield Q[p].popleft()
>              else:
>                  Q[~p].append(x)
>                  for x in gen(p):  yield x
>          while Q[p]:  yield Q[p].popleft()
>      return gen(1),gen(0)

Do we even need the line

>                  for x in gen(p):  yield x

??!!

It seems to work the same without it.

from collections import deque

def xsplitter(seq, pred):
Q = deque(),deque()
it = iter(seq)
def gen(p):
for x in it:
if pred(x) == p:
Q[p].append(x)
while Q[p]:  yield Q[p].popleft()
else:
Q[~p].append(x)
while Q[p]:  yield Q[p].popleft()
return gen(1),gen(0)

What's up here? Was it a fata morgana? Am I overlooking something?

A.

```