> 백엔드 개발 > 파이썬 튜토리얼 > Python 목록 정렬의 두 가지 방법과 예

Python 목록 정렬의 두 가지 방법과 예

高洛峰
풀어 주다: 2016-10-19 11:33:36
원래의
1337명이 탐색했습니다.

List를 정렬하기 위해 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)]
로그인 후 복사

위와 같이 List를 정렬하는 방법은 6가지가 있는데, 그 중 which 예제 3.4.5.6은 목록 항목

의 특정 항목을 비교 키로 정렬하는 데 사용할 수 있습니다.

효율성 비교:

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

키워드로 순위 지정,

두 번째 키워드를 기준으로 정렬한 후 첫 번째 키워드를 사용하여 정렬하려는 경우

예시 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 모직물? 그 이유는 튜플을 왼쪽에서 오른쪽으로 비교한 후

이 같으면 두 번째

를 비교하기 때문입니다.

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