how to append to list in list comprehension
Rustom Mody
rustompmody at gmail.com
Sat Oct 1 00:16:54 EDT 2016
On Saturday, October 1, 2016 at 9:08:09 AM UTC+5:30, Sayth Renshaw wrote:
> I do like [(f + ['0'] if len(f) < 5 else f) for f in fups ] Rustom, if there are better non list comprehension options I would like to know as generally I find then confusing.
Two points here — best taken independently:
1. List comprehensions are confusing
2. When to want/not want them
For 1 I suggest you (privately) rewrite them with '|' for 'for' and '∈' for 'in'
Once you do that they will start looking much more like the origin that inspires
them — set builder notation:
https://en.wikipedia.org/wiki/Set-builder_notation
>From there I suggest you play with replacing '[]' with '{}' ie actually try
out set comprehensions and then others like dict-comprehensions — very nifty
and oft-neglected. And the mother of all — generator comprehensions.
Of course to check it out in python you will need to invert the translation:
'|' for 'for' and '∈' for 'in'
the point of which is to use python as a kind of math assembly language
*into* which you *code* but not in which you *think*
For 2 its important that you always keep in front of you whether you want to
approach a problem declaratively (the buzzword FP!) or imperatively.
Python is rather unique in the extent to which it allows both
This also makes it uniquely difficult because its all too easy to garble the
two styles as John's .append inside a LC illustrates.
And the way to ungarble your head is by asking yourself the meta-question:
Should I be asking "How to solve this (sub)problem?" or more simply
"What is the (sub)problem I wish to solve?"
How questions naturally lead to imperative answers; whats to declarative
You may be helped with [plug!] my writings on FP:
http://blog.languager.org/search/label/FP
Particularly the tables in:
http://blog.languager.org/2016/01/primacy.html
More information about the Python-list
mailing list