Rather than a list comprehension, it would be faster and more 
memory-efficient to use a generator comprehension.  Just change the 
square brackets to parentheses:

     for j in (i*2 for i in c if <test>):
        print j


Grant Edwards wrote:
> On 2006-03-26, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> 
>>Hi All,
>>
>>I apologize if this was brought up before, I couldn't find any "prior
>>art" :-).
>>On more than one occasion, I found myself wanting to use a "conditional
>>loop" like this (with "Invalid syntax" error, of course):
>>
>>      for i in c if <test>:
>>              print i*2
>>
>>...because it's similar to the list comprehension construct:
>>
>>      [i*2 for i in c if <test>]
>>                        ---------
>>
>>Is this the intended difference in constructs? The available equivalent
>>feels a bit awkward:
>>
>>      for i in c:
>>              if <test>:
>>                      print i*2
> 
> 
>    for j in [i*2 for i in c if <test>]:
>       print j
> 
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to