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