Python list sorting methods and Examples
Sorts lists. 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, and the first is compared. If it is equal, the second is compared.
The above is all the content of this article. I hope this article will help you in your study or work. I also hope to provide more support to the customer's home!