Sorting by item_in_another_list
J. Clifford Dyer
jcd at sdf.lonestar.org
Wed Oct 25 12:16:30 EDT 2006
ZeD wrote:
> Paul Rubin wrote:
>
>>> A = [0,1,2,3,4,5,6,7,8,9,10]
>>> B = [2,3,7,8]
>>>
>>> desired_result = [2,3,7,8,0,1,4,5,6,9,10]
>> How about:
>>
>> desired_result = B + sorted(x for x in A if x not in B)
>
> this. is. cool.
>
Cool, yes, but I'm not entirely sure it does what the OP wanted. Partly
because I'm not entirely sure what the OP wanted. Counter example:
Given these variables:
A = [0,1,2,3,4,5,6,8,9,10] # Note 7 is missing
B = [2,3,7,8]
which of the following should the function yield?
desired_result = [2,3,7,8,0,1,4,5,6,9,10]
desired_result2 = [2,3,8,0,1,4,5,6,9,10]
The fact that we are ostensibly sorting A makes me thing it should be
the latter, but the example given was ambiguous. If we are in fact
looking for desired_result2, maybe we should use:
result = [ x for x in B if x in A ] + [ x for x in A if X not in B ]
or like the sibling post suggests: substitute set(A) and set(B) for the
"in" argument in each comprehension.
Cheers,
Cliff
More information about the Python-list
mailing list