이 글에 공유된 내용은 고급 Python 실무 기능입니다. 이제 모든 사람과 공유합니다. 도움이 필요한 친구들은 이 글의 내용을 참조할 수 있습니다.
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'이 아닙니다
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 = [('d',2),('a',4),('b',3),('c',2)] >>> L.sort(key=lambda x:x[1]) >>> L >>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)]
이때 정렬된 L은 두 번째 키워드에 따라서만 순위가 매겨지는 것을 알 수 있습니다.
두 번째 키워드를 기준으로 정렬한 후 다음을 기준으로 정렬하려면 어떻게 해야 할까요? 첫 번째 키워드에는 두 가지 방법이 있습니다
예제 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)]
예제 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是的比较从左到右比较的,比较完第一个,如果相等,比较第二个
관련 권장 사항:
Python 함수 map, filter, Reduce에 대한 자세한 설명
위 내용은 고급 Python 실용적인 기능(업데이트 중)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!