[Tutor] Aschenputtel problem

Alan G alan.gauld at freenet.co.uk
Fri Sep 16 00:30:39 CEST 2005


>> [condition(i) and list1.append(i) or list2.append(i) for i in 
>> original]
> 
> Hmm, no, this will always evaluate list2.append(i) because 
> the value of list1.append(i) is None. You could use
> 
> [ (condition(i) and list1 or list2).append(i) for i in original ]

Oops! Good point, which emphasises the point about shorter not 
necessarily being better!

My personal approach would be two separate comprehensions(*) which 
keeps the intent very clear and keeps it short at the expense 
of iterating the original list twice.

(*) Or you could use the filter funtion twice if you want to 
    make the intent even more explicit...

Alan G.


More information about the Tutor mailing list