python list 정렬 의 두 가지 방법 및 실례 설명

3815 단어 pythonlist정렬
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 가 변 하지 않 고 새로운 정렬 된 list 대상 을 만 듭 니 다.
list.sort()는 대상 을 되 돌려 주지 않 고 원래 의 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 개의 List 정렬 방법 을 제 시 했 는데 그 중에서 인 스 턴 스 3.4.5.6 은 List item 중의 한 항목 을 만 들 수 있 습 니 다.
키 워드 를 비교 하기 위해 정렬 합 니 다.
효율 비교:
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 네,왼쪽 에서 오른쪽으로 비교 한 것 입 니 다.첫 번 째 를 비교 하고 똑 같 으 면 두 번 째 를 비교 합 니 다.
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!

좋은 웹페이지 즐겨찾기