On Mon, Aug 29, 2011 at 10:45 AM, Travis Parks <jehugalea...@gmail.com> wrote: > I wanted to allow for calls like this: > > extend(range(0, 1000)).map(lambda x: x * x).where(lambda x: x % 2 == > 0).first(lambda x: x % 7 == 0) > > It allows me to compose method calls similarly to LINQ in C#. I think > this looks better than: > > first(where(map(range(0, 1000), lambda x: x * x, lambda x: x % 2 == 0, > lambda x : x % 7 == 0)))
FWIW, I would be inclined to write that in Python like this: def first(iterable): try: return next(iter(iterable)) except StopIteration: raise ValueError("iterable was empty") squares = (x * x for x in range(0, 1000)) first(x for x in squares if x % 14 == 0) It does a bit too much to comfortably be a one-liner no matter which way you write it, so I split it into two. Cheers, Ian -- http://mail.python.org/mailman/listinfo/python-list