The content shared in this article is advanced python practical functions. Now I share it with everyone. Friends in need can refer to the content of this article
How to add exception parameters to the assert statement
The exception parameters of assert are actually adding string information after the assertion expression to explain the assertion and make it better Know what went wrong. The format is as follows:
assert expression [, arguments]
assert expression [, arguments]
assert len(lists) >=5,'The number of elements in the list is less than 5'
assert 2==1,'2 is not equal to 1'
data_list = [] data_list.append({'softname':'1','version':'1.2.2.2'}) data_list.append({'softname':'7','version':'1.2.2.2'}) data_list.append({'softname':'5','version':'1.2.2.2'}) data_list.append({'softname':'2','version':'1.2.2.2'}) data_list.append({'softname':'3','version':'1.2.2.2'}) data_list.append({'softname':'9','version':'1.2.2.2'}) #升序 data_list.sort(key=lambda obj:obj.get('softname'), reverse=False) print data_list #[{'softname': '1'}, {'softname': '2'}, {'softname': '3'}, {'softname': '5'}, {'softname': '7'}, {'softname': '9'}] #降序 data_list.sort(key=lambda obj:obj.get('softname'), reverse=True) print data_list #[{'softname': '9'}, {'softname': '7'}, {'softname': '5'}, {'softname': '3'}, {'softname': '2'}, {'softname': '1’}]
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]
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]
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]
Example 2: Reverse sorting
>>>L = [2,3,1,4] >>>L.sort(reverse=True) >>>L >>>[4,3,2,1]
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)]
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 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 be used to sort a certain item in the List item
as the comparison key.
Efficiency comparison:
cmp < DSU < key
Through experimental comparison, method 3 is slower than method 6, method 6 is slower than method 4, method 4 Basically the same as method 5
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)]
We see that the sorted L at this time is only based on the second key Sort by word,
What if we want to sort by the second keyword and then sort by the first keyword? 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)]
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)] #实例8能够工作呢?原因在于tuple是的比较从左到右比较的,比较完第一个,如果相等,比较第二个
Related recommendations:
In-depth anatomy of Python functions
Detailed explanation of the map of python functions ,Filter,Reduce
The above is the detailed content of Advanced python practical functions (under update). For more information, please follow other related articles on the PHP Chinese website!