[Tutor] Aschenputtel problem

bob bgailer at alum.rpi.edu
Thu Sep 15 20:47:42 CEST 2005


At 10:12 AM 9/15/2005, Christopher Arndt wrote:
>Hi,
>
>I wonder if there is a shorter form of the following idiom:
>
>list1 = []
>list2 = []
>for item in original_list:
>     if condition(item):
>         list1.append(item)
>     else:
>         list2.append(item)

Consider (5 lines instead of 7):

lists = [[], []]
for item in original_list:
     lists[condition(item)].append(item)
list1 = lists[0]
list2 = lists[1]

This assumes condition() returns 0 or 1 (True)

or if you don't mind the result in sets (assumes unique elements):

set1 = set([x for x in original_list if cond(x)])
set2 = original_list - set1 



More information about the Tutor mailing list