this customize sort did not work ,what's wrong?

Alf P. Steinbach alfps at start.no
Sat Jan 23 16:37:40 EST 2010


* thinke365:
> jesus, now i fixed it, using odd lambda sort.
> l.sort(lambda x,y: cmp(len(x), len(y)))
> print l

This uses 'cmp'. Your earlier code, quoted below, used '>'.


> BUT I AM STILL CONFUSED WHY COSTOMIZED SORT FAILED TO SORT AS IT IS 
> PROGRAMMER!

Please don't shout.


> thinke365 wrote:
>> i mean the output i want is:
>> [ [1, 2], [1, 2, 3, 4], [1, 2, 3, 4, 5]], that is sort according to the
>> length of the list element
>>
>> thinke365 wrote:
>>> l = list()
>>> l1 = list((1, 2, 3, 4))
>>> l2 = list((1,2))
>>> l3 = list((1, 2, 3, 4, 5))
>>> l.append(l1)
>>> l.append(l2)
>>> l.append(l3)
>>> print l
>>>
>>> def sort_by_list(E1, E2):
>>>     print len(E1), len(E2)
>>>     return len(list(E1)) > len(list(E2))
>>>
>>> l.sort(cmp=sort_by_list)
>>> print l
>>>
>>> output:
>>> [[1, 2, 3, 4], [1, 2], [1, 2, 3, 4, 5]]
>>> 2 4
>>> 5 2
>>> [[1, 2, 3, 4], [1, 2], [1, 2, 3, 4, 5]]
>>>
>>> the order of the elements in the list did not change!
>>>

Cheers & hth.,

- Alf



More information about the Python-list mailing list