On Sun, Jun 8, 2014 at 10:24 AM, jongiddy <jongi...@gmail.com> wrote:
> A contrived example - which of these is easier to understand?
>
> from base64 import b64encode
>
> # works now
> print(b64encode(str(min(map(int, f.readlines()), key=lambda n: n % 10)), 
> b'?-'))
>
> # would work with UFCS
> f.readlines().map(int).min(key=lambda n: n % 
> 10).str().b64encode(b'?-').print()

I prefer not making it a one-liner:

data = map(int, f.readlines())
min_data = min(data, key=lambda n: n % 10)
print(b64encode(str(smallest_data), b'?-'))

Python's standard of having in-place methods return None also forces
this to an extent.  Whenever you want to tack on something like
.append(), that's the end of your chain and it's time to start a new
line anyway.  Of course, you could always define something like:

def appended(iterable, x):
    result = list(iterable)
    result.append(x)
    return result

and use that in your chain.
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to