[Python-ideas] Accessing the result of comprehension's expression from the conditional
Tal Einat
taleinat at gmail.com
Fri Jun 19 16:34:15 CEST 2009
On Fri, Jun 19, 2009 at 4:45 PM, Jim Jewett<jimjjewett at gmail.com> wrote:
> On Fri, Jun 19, 2009 at 7:34 AM, Tal Einat<taleinat at gmail.com> wrote:
>> Just using [f(x) for x in nums if f(x) > 0] is the most readable and
>> obvious option.
>
> I would often prefer to break it into two steps:
>
> temp = (f(x) for x in nums)
> results = [e for e in temp if e>0]
I sometimes find myself doing that too. That's probably more readable
than what I wrote :)
> Others will dislike the extra line and temp var, which is one reason
> it isn't among the several solutions previously suggested.
I sometimes avoid the temporary variable by using the same one twice, e.g.:
results = (f(x) for x in nums)
results = [res for res in results if res > 0]
In the above example the second line is just filtering the results,
and I feel this idiom conveys the idea pretty well.
- Tal
More information about the Python-ideas
mailing list