Two methods and examples of python list sorting

不言
Release: 2018-04-18 11:18:59
Original
2063 people have browsed it

This article mainly introduces two methods and examples of python list sorting. It has a very good reference value. Let’s take a look at it.

To sort the 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 the 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 sort


>>>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: 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)]
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

Sort for comparison keywords.

Efficiency comparison:

cmp < DSU < keyThrough 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 = [('d',2),('a',4),('b',3),('c',2)] >>> L.sort(key=lambda x:x[1]) >>> L >>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)]
Copy after login


We see that the sorted L at this time is only based on the second keyword Ranked,

What if we want to use the second keyword to sort and then use the first keyword to sort? There are two methods

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


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


Why does instance 8 work? The reason is that tuples are compared from left to right. After comparing the first one, if they are equal, compare the second oneRelated recommendations:

The sorting method of nested tuples in the python list object using sort

The sorting method when the python list element is a tuple


The above is the detailed content of Two methods and examples of python list sorting. For more information, please follow other related articles on the PHP Chinese website!

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
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!