[Python-ideas] More power in list comprehensions with the 'as' keyword
Bruce Leban
bruce at leapyear.org
Wed Aug 27 19:30:29 CEST 2008
[t for t in [t.strip() for t in text.split('\n')] if t != '']
On Wed, Aug 27, 2008 at 10:00 AM, Imri Goldberg <lorgandon at gmail.com> wrote:
> +1 from me, I find myself doing that all the time as well.
>
> On Wed, Aug 27, 2008 at 7:51 PM, Tarek Ziadé <ziade.tarek at gmail.com>wrote:
>
>> Hello
>>
>> There's a pattern I am doing all the time: filtering out some elements of
>> a list, and cleaning them in the same move.
>>
>> For example, if I have a multi line text, where I want to:
>>
>> - keep non empty lines
>> - clean non empty lines
>>
>> I am doing:
>>
>> >>> text = """
>> ... this is a multi-line text\t
>> ...
>> ... \t\twith
>> ...
>> ... muliple lines."""
>>
>> >>> [l.strip() for l in text.split('\n') if l.strip() != '']
>> ['this is a multi-line text', 'with', 'muliple lines.']
>>
>> It is not optimal, because I call strip() twice. I could use ifilter then
>> imap or even use a real loop, but I
>> want my simple, concise, list comprehension ! And I couldn't find a
>> simple way to express it.
>>
>> The pattern can be generically resumed like this :
>>
>> [transform(e) for e in seq if some_test(transform(e))]
>>
>> So what about using the 'as' keyword to extend lists comprehensions, and
>> to avoid calling transform() twice ?
>>
>> Could be:
>>
>> [transform(e) as transformed for e in seq if some_test(transformed)]
>>
>> In my use case I would simply have to write;:
>>
>> [l.strip() as stripped for l in text.split('\n') if stripped != '']
>>
>> Which seems to me clear and concise.
>>
>> Regards,
>> Tarek
>>
>> --
>> Tarek Ziadé | Association AfPy | www.afpy.org
>> Blog FR | http://programmation-python.org
>> Blog EN | http://tarekziade.wordpress.com/
>>
>> _______________________________________________
>> Python-ideas mailing list
>> Python-ideas at python.org
>> http://mail.python.org/mailman/listinfo/python-ideas
>>
>>
>
>
> --
> Imri Goldberg
> --------------------------------------
> www.algorithm.co.il/blogs/
> www.imri.co.il
> --------------------------------------
> -- insert signature here ----
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> http://mail.python.org/mailman/listinfo/python-ideas
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20080827/8d4e2327/attachment.html>
More information about the Python-ideas
mailing list