
On Fri, Jun 19, 2009 at 4:45 PM, Jim Jewett<jimjjewett@gmail.com> wrote:
On Fri, Jun 19, 2009 at 7:34 AM, Tal Einat<taleinat@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