Two methods and examples of python list sorting

高洛峰
Release: 2016-10-19 11:33:36
Original
1312 people have browsed it

To sort List, Python provides two methods

Method 1. Use List’s built-in function list.sort to sort

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]
Copy after login

Method 2. Use sequence type function sorted(list) to sort (starting from 2.4)

Python example:

>>> list = [2,5,8,9,3]  
>>> list  
[2,5,8,9,3]  
>>> sorted(list)  
[2, 3, 5, 8, 9]
Copy after login

The difference 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() will not return objects and change the original list.

Other examples of sort:

Example 1: Forward sorting

>>>L = [2,3,1,4]
>>>L.sort()
>>>L
>>>[1,2,3,4]
Copy after login

Example 2: Reverse sort

>>>L = [2,3,1,4]
>>>L.sort(reverse=True)
>>>L
>>>[4,3,2,1]
Copy after login

Example 3: Sorting 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)]
Copy after login

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)]
Copy after login

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)]
Copy after login

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 stable sort
>>>A.sort()
>>>L = [s[2] for s in A]
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
Copy after login

The above gives 6 methods for sorting List, among which Example 3.4.5.6 can be used to sort a certain item

in the List item as the comparison key.

Efficiency comparison:

cmp < DSU < key< DSU < key

Through experimental comparison, method 3 is slower than method 6, method 6 is slower than method 4, method 4 and method 5 are basically equivalent

Multiple keyword comparison sorting:

Example 7:

>>>L = [(&#39;d&#39;,2),(&#39;a&#39;,4),(&#39;b&#39;,3),(&#39;c&#39;,2)]
>>> L.sort(key=lambda x:x[1])
>>> L
>>>[(&#39;d&#39;, 2), (&#39;c&#39;, 2), (&#39;b&#39;, 3), (&#39;a&#39;, 4)]
Copy after login

We see that the sorted L at this time is only sorted according to the second keyword.

If we want to use the second keyword to sort, then use the first keyword. What about sorting? There are two methods

Example 8:

>>> L = [(&#39;d&#39;,2),(&#39;a&#39;,4),(&#39;b&#39;,3),(&#39;c&#39;,2)]
>>> L.sort(key=lambda x:(x[1],x[0]))
>>> L
>>>[(&#39;c&#39;, 2), (&#39;d&#39;, 2), (&#39;b&#39;, 3), (&#39;a&#39;, 4)]
Copy after login

Example 9:

>>> L = [(&#39;d&#39;,2),(&#39;a&#39;,4),(&#39;b&#39;,3),(&#39;c&#39;,2)]
>>> L.sort(key=operator.itemgetter(1,0))
>>> L
>>>[(&#39;c&#39;, 2), (&#39;d&#39;, 2), (&#39;b&#39;, 3), (&#39;a&#39;, 4)]
Copy after login

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 one


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!