Home >Backend Development >Python Tutorial >Detailed explanation of two example methods of python list sorting
To sort List, Python provides two methods
list.sort(func=None, key=None, reverse=False)
Python example:
>>> list = [2,5,8,9,3] >>> list [2,5,8,9,3] >>> list.sort() >>> list [2, 3, 5, 8, 9]
Python example:
>>> list = [2,5,8,9,3] >>> list [2,5,8,9,3] >>> sorted(list) [2, 3, 5, 8, 9]
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() will not return objects and change the original list.
>>>L = [2,3,1,4] >>>L.sort() >>>L >>>[1,2,3,4]
>>>L = [2,3,1,4] >>>L.sort(reverse=True) >>>L >>>[4,3,2,1]
>>>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)]
>>>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)]
>>>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)]
>>>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)]
The above gives 6 methods for sorting List, among which Example 3.4.5.6 can play a role in sorting a certain item in the List item
Sort the comparison keywords.
Efficiency comparison:
cmp < DSU < key
Through experimental comparison, method 3 is slower than method 6. 6 is slower than method 4. Method 4 and method 5 are basically equivalent
Multiple keyword comparison sorting:
>>>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 see that at this time, the sorting The L is only sorted according to the second keyword.
What if we want to sort by the second keyword and then use the first keyword to sort? There are two methods
>>> 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)]
>>> 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 example 8 work? The reason is that tuples are compared from left to right. After comparing the first one, if
is equal, compare the second
The above is the detailed content of Detailed explanation of two example methods of python list sorting. For more information, please follow other related articles on the PHP Chinese website!