>  기사  >  백엔드 개발  >  고급 Python 실용적인 기능(업데이트 중)

고급 Python 실용적인 기능(업데이트 중)

不言
不言원래의
2018-04-13 17:11:251284검색

이 글에 공유된 내용은 고급 Python 실무 기능입니다. 이제 모든 사람과 공유합니다. 도움이 필요한 친구들은 이 글의 내용을 참조할 수 있습니다.

1.pyhton Assertion


Assert Assertion 문 추가 방법 예외 매개변수
assert의 예외 매개변수는 실제로 어설션을 설명하고 무엇이 잘못되었는지 더 잘 이해하기 위해 어설션 표현식 뒤에 문자열 정보를 추가합니다. 형식은 다음과 같습니다:
assert 표현식 [, 인수]
assert 표현식 [, 인수]

assert len(lists) >=5,'The number of elements in the list is less than 5'
assert 2== 1,'2는 1'이 아닙니다

2.list 복잡한 정렬

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’}]

리스트를 정렬하기 위해 Python에서는 두 가지 방법을 제공합니다

방법 1. List의 내장 함수 list.sort를 사용하여 정렬

list.sort(func=None, key=None, reverse=False)

Python 예:

>>> list = [2,5,8,9,3]    
>>> list    [2,5,8,9,3]    
>>> list.sort()    
>>> list    [2, 3, 5, 8, 9]

방법 2. 정렬에는 시퀀스 유형 함수 sorted(list)를 사용합니다(2.4부터)

Python 예:

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

두 방법의 차이점:
sorted(list) 반환 표현식 모드로 사용할 수 있는 객체입니다. 원래 목록은 변경되지 않고 유지되며 새로운 정렬된 목록 개체가 생성됩니다.
list.sort()는 객체를 반환하지 않고 원래 목록을 변경하지 않습니다.
다른 정렬 예:
예 1: 정방향 정렬

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

예 2: 역방향 정렬

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

예 3: 두 번째 키워드 정렬

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

예 4: 두 번째 키워드 정렬

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

예 5: 두 번째 키워드 정렬

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

예 6: (DSU 방법: 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)]

위는 목록을 정렬하는 6가지 방법을 제공하며, 그 중 예 3.4.5.6에서는 목록 항목의 항목으로 정렬

역할을 수행할 수 있습니다.

효율성 비교:

cmp < DSU < key

실험적으로 비교해보면 방법 3은 방법 6보다 느리고, 방법 6은 방법 4보다 느리고, 방법 4와 방법 5는 기본적으로 동등

다중 키워드 비교 정렬:

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

이때 정렬된 L은 두 번째 키워드에 따라서만 순위가 매겨지는 것을 알 수 있습니다.

두 번째 키워드를 기준으로 정렬한 후 다음을 기준으로 정렬하려면 어떻게 해야 할까요? 첫 번째 키워드에는 두 가지 방법이 있습니다

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

예제 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是的比较从左到右比较的,比较完第一个,如果相等,比较第二个

관련 권장 사항:

Python 함수 심층 분석 정보

Python 함수 map, filter, Reduce에 대한 자세한 설명

위 내용은 고급 Python 실용적인 기능(업데이트 중)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.