Python 목록 정렬의 두 가지 예제 방법에 대한 자세한 설명

高洛峰
풀어 주다: 2017-03-17 16:39:37
원래의
1929명이 탐색했습니다.

List를 정렬하려면 Python에서 두 가지 방법을 제공합니다.

방법 1. List에 내장된 함수를 사용합니다. listsort 정렬

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)]
로그인 후 복사

위에서는 List 정렬을 위한 6가지 방법을 제공하며, 그 중 예제 3.4.5.6은 List 항목의 특정 항목을 정렬하는 역할을 할 수 있습니다

비교 키워드를 정렬합니다. 🎜> 효율성 비교:

cmp < DSU < key

실험적 비교를 통해 방법 3은 방법 6보다 느리고 방법 6은 방법 4보다 느립니다.

다중 키워드 비교 정렬:

예 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이 작동하는 이유는 무엇입니까? 그 이유는 튜플을 왼쪽에서 오른쪽으로 비교한 후
가 같으면 두 번째

를 비교하기 때문입니다.

위 내용은 Python 목록 정렬의 두 가지 예제 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!