"For" loop and list comprehension similarity
John Zenger
john_zenger at yahoo.com
Sun Mar 26 18:15:42 EST 2006
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, s.lipnevich at gmail.com <s.lipnevich at gmail.com> 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
>
More information about the Python-list
mailing list