Python 정렬 함수 사용 방법 설명

3702 단어 python정렬함수
Python 정렬 함수는 Python 언어의 간결성을 완벽하게 나타낸다. List 대상에 대해sort () 함수 (여기서'방법'이라고 부르는 것이 더 적합함) 를 직접 호출하여 정렬할 수 있고, 다른 교체 대상 (예를 들어 set,dict) 에는 더욱 유연한sorted () 함수를 사용할 수 있다.

하나.목록의 sort() 함수


Python 소스 빌트인입니다.py 파일이sort () 함수에 대한 정의는 다음과 같습니다.

 def sort(self, key=None, reverse=False):
 """ L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* """
 pass
알 수 있듯이:sort () 함수는 반환 값이 없고 두 개의 매개 변수가 있습니다.key는 배열 근거의 함수를 나타낸다.reverse는 목록을 반전할 필요가 없다는 것을 가리킨다. 기본값은 False는 오름차순이고, True로 설정된 것은 내림차순이다.
sort () 용법은 다음과 같다.

L = [1, 2, 7, 4, 3]
L.sort()
print(L)
#[1, 2, 3, 4, 7]
내림차순 정렬과 같은 매개변수를 추가합니다.

L = [1, 2, 7, 4, 3]
L.sort(reverse=True)
print(L)
#[7, 4, 3, 2, 1]
그리고 예를 들어 우리는 키를 통해 순서를 낮추는 정렬을 실현하고 싶습니다. 여기는 익명 함수 lambda를 사용합니다.

L = [1, 2, 7, 4, 3]
L.sort(key=lambda x : x*(-1))
print(L)
#[7, 4, 3, 2, 1]
물론 키에는 아직도 많은 사용법이 있다. 우리는 이를 내장 함수나 사용자 정의 함수로 설정할 수 있다. 예를 들어 절대값 함수로 설정할 수 있다.

L = [-1, 2, -7, 4, 3]
L.sort(key=abs)
print(L)
#[-1, 2, 3, 4, -7]
Python3는 키에 대한 또 다른 지원이 있습니다.functools 모듈을 통한 cmp_to_키 함수, 전통적인 cmp 함수를 키로 바꿉니다.이것은 lambda 함수 사용법과 유사하지만 비교적 논리가 복잡한 상황에 대해 이런 방식은 더욱 명확하고 유지보수에 편리하다.

from functools import cmp_to_key
L = [-1, 2, -7, 4, 3]
def cmp(a,b):
 if abs(a) < abs(b):
 return -1
 else:
 return 1
L.sort(key=cmp_to_key(cmp))
print(L)

2.sorted()


sort () 함수보다 목록만 정렬할 수 있습니다.sorted 함수는 좀 더 통용됩니다.공식 문서에 대한 자세한 내용은 다음과 같습니다.

sorted(iterable, *, key=None, reverse=False)
Return a new sorted list from the items in iterable.
sorted() 반환 값은 List 유형입니다.매개 변수 목록iterable은 교체 가능한 대상을 나타냅니다. *위치 매개 변수가 여기서 끝난다는 것을 표시하고 뒤에 있는 매개 변수는 키워드로 지정해야 한다.key와reverse 매개 변수 사용법은sort () 와 완전히 일치합니다.
sorted() 사용법은 다음과 같습니다.

L = [1, 2, 7, 4, 3]
L1 = sorted(L)
print(L1)
#[1, 2, 3, 4, 7]
reverse와 키의 사용법은 따로 보여주지 않습니다.sort () 를 참고하십시오.만약 우리가 정렬하고자 하는 대상이 집합이라면, 사용법은 목록 정렬과 같다.

S = {1, 2, 7, 4, 3}
S1= sorted(S)
print(S1)
#[1, 2, 3, 4, 7]
이 정렬 대상은 set 대상입니다. 결과는 목록 대상입니다. (set 대상은 원래 순서가 없습니다.만약 우리가 좀 복잡한 정렬을 실현해야 한다면?예를 들어 사전 정렬, 정렬 근거는 키 값이고 정렬 결과는 키 값 쌍으로 구성된 목록이다.

Dict = {'a':2, 'b':3, 'c':7, 'd':4, 'e':1}
L = sorted(Dict.items(), key=lambda x : x[1])
print(L)
#[('e', 1), ('a', 2), ('b', 3), ('d', 4), ('c', 7)]
마지막으로 Leetcode에 있는 문제 문자에 따라 주파수 정렬:
문자열을 지정합니다. 문자열의 문자를 나타나는 빈도에 따라 정렬하십시오.
입력:
"tree"
출력:
"eert"
설명:
'e'는 두 번 나타나고,'r'와't'는 모두 한 번만 나타난다.따라서'e'는'r'와't'이전에 나타나야 한다.이 밖에'eetr'도 효과적인 답안이다.
sorted 함수 코드를 사용하면 쉽게 읽을 수 있습니다.

def frequencySort(s):
 d = {}
 for i in s:
 d[i] = d.get(i,0) + 1
 L = sorted(d.keys(), key=lambda x: d[x], reverse=True)
 s = ''
 for i in L:
 s += i * d[i]
 return s
여기서 d.keys () 는 키로 구성된 교체 가능한 대상을 생성하고, 앞 코드의 Dict.items () 는 키 값 대 대상 (이것은 Tuple 대상) 으로 구성된 교체 가능한 대상을 생성합니다.
파이썬 정렬 함수 사용법에 대한 이 글은 여기까지 소개되었습니다. 파이썬 정렬 함수 사용법에 대한 더 많은 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보시기 바랍니다. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기