Home >Backend Development >Python Tutorial >Advanced python practical functions (under update)

Advanced python practical functions (under update)

不言
不言Original
2018-04-13 17:11:251371browse

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

1.pyhton assertion


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'

2.list complex sorting

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 = [(&#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)]

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 = [(&#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)]

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

#实例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!

Statement:
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