Sort the List. Python provides two methods: 1. sort the List using listsort (funcNone, keyNone, reverseFalse). Python provides two methods.
Method 1: Use the List built-in function list. sort for sorting.
List. sort (func = None, key = None, reverse = False)
Python instance:
>>> list = [2,5,8,9,3] >>> list [2,5,8,9,3] >>> list.sort() >>> list [2, 3, 5, 8, 9]
Method 2. Sort by sequence type function sorted (list) (starting from 2.4)
Python instance:
>>> list = [2,5,8,9,3] >>> list [2,5,8,9,3] >>> sorted(list) [2, 3, 5, 8, 9]
Differences between the two methods:
Sorted (list) returns an object that can be used as an expression. The original list remains unchanged, and a new sorted list object is generated.
List. sort () does not return objects and changes the original list.
Other sort instances:
Instance 1: forward sorting
>>>L = [2,3,1,4]>>>L.sort()>>>L>>>[1,2,3,4]
Instance 2: reverse sorting
>>>L = [2,3,1,4]>>>L.sort(reverse=True)>>>L>>>[4,3,2,1]
Instance 3: sort the second keyword
>>>L = [('b',6),('a',1),('c',3),('d',4)]>>>L.sort(lambda x,y:cmp(x[1],y[1])) >>>L>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]
Example 4: sort the second keyword
>>>L = [('b',6),('a',1),('c',3),('d',4)]>>>L.sort(key=lambda x:x[1]) >>>L>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]
Instance 5: sort the second keyword
>>>L = [('b',2),('a',1),('c',3),('d',4)]>>>import operator>>>L.sort(key=operator.itemgetter(1)) >>>L>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
Instance 6: (DSU method: Decorate-Sort-Undercorate)
>>>L = [('b',2),('a',1),('c',3),('d',4)]>>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort>>>A.sort()>>>L = [s[2] for s in A]>>>L>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
In the preceding section, we use the List sorting method in step 6. instance 3.4.5.6 can be used to sort an item in List item.
Sort the comparison keywords.
Efficiency comparison:
Cmp <DSU <key
Through experimental comparison, Method 3 is slower than method 6, method 6 is slower than method 4, and method 4 and method 5 are basically equivalent.
Sort multiple keywords by comparison:
Instance 7:
>>>L = [('d',2),('a',4),('b',3),('c',2)]>>> L.sort(key=lambda x:x[1])>>> L>>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)]
We can see that the sorted L is only sorted by the second keyword,
What if we want to sort by the second keyword and then sort by the first keyword? There are two methods
Instance 8:
>>> L = [('d',2),('a',4),('b',3),('c',2)]>>> L.sort(key=lambda x:(x[1],x[0]))>>> L>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
Instance 9:
>>> L = [('d',2),('a',4),('b',3),('c',2)]>>> L.sort(key=operator.itemgetter(1,0))>>> L>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
Why does instance 8 work? The reason is that tuple is compared from left to right. after comparison, if
Equal, compared to the second