In this paper, we mainly introduce two methods of Python list sorting and some examples to explain. Have a good reference value, let's see it together.
To sort the list, Python provides two methods
Method 1: Sort by using the list's built-in function list.sort
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]
The difference between the two methods:
Sorted (list) Returns an object that can be used as an expression. The original list does not change, creating a new sorted list object.
List.sort () does not return an object, changing the original list.
Other examples of sort:
Example 1: Forward Ordering
>>>l = [2,3,1,4]>>>l.sort () >>>l>>>[1,2,3,4]
Example 2: Reverse sorting
>>>l = [2,3,1,4]>>>l.sort (reverse=true) >>>l>>>[4,3,2,1]
Example 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)]
Example 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)]
Example 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 s Table Sort>>>a.sort () >>>l = [s[2] for S in a]>>>l>>>[(' A ', 1), (' B ', 2), (' C ', 3), (' D ', 4)]
The above gives the method of sorting the list in 6, where instance 3.4.5.6 can play an item in the list item
Sort the comparison keywords.
Efficiency comparison:
CMP < DSU < key
Comparing with the experiment, Method 3 is slower than method 6, method 6 is slower than Method 4, Method 4 and Method 5 are basically equivalent
Multi-keyword comparison sort:
Example 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)]
As we can see, the sort of L is now sorted by the second keyword only,
What if we want to order the second keyword and then sort it with the first keyword? There are two ways
Example 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)]
Example 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 a tuple is compared from left to right, compared to the first, if equal, compare the second