Python에서 sort()를 사용하는 방법에 대한 자세한 설명

高洛峰
풀어 주다: 2017-05-25 11:14:31
원래의
3328명이 탐색했습니다.

1. 기본 형식

sorted(iterable[, cmp[, key[, reverse]]])
iterable.sort(cmp[, key[, reverse]])
로그인 후 복사


매개변수 설명:
(1) iterable은 말할 필요도 없이 정렬할 목록 또는 iterable을 지정합니다. 2 ) cmp는 정렬 시 비교를 위한 함수를 지정하는 함수입니다. 다음과 같이 함수 또는 람다 함수를 지정할 수 있습니다.
Students는 클래스 객체의 목록입니다. cmp 함수를 정의할 수 있습니다. 예를 들어 여기에서 세 번째 데이터 멤버를 비교하여 정렬하려면 코드를 다음과 같이 작성할 수 있습니다.

students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=lambda student : student[2])
로그인 후 복사

(3) 키는 다음을 지정하는 함수입니다. 정렬할 요소 중 어떤 항목이 정렬에 사용되는지, 함수는 위의 예를 설명하기 위해 코드는 다음과 같습니다.

sorted(students, key=lambda student : student[2])
로그인 후 복사

key로 지정된 람다 함수의 기능은 다음과 같습니다. 학생 요소(예: 학생[2])의 세 번째 필드를 제거하면 정렬 시 기준으로 정렬됩니다. 모든 학생 요소의 세 번째 필드가 정렬에 사용됩니다.

2. 일반적인 사용법:
1. 내부 정렬 1) 목록에는 목록을 내부에서 정렬하는 자체 정렬 방법이 있습니다. 내부 정렬이기 때문에 튜플은 수정할 수 없기 때문에 분명히 이 방법을 사용할 수 없습니다.

x = [4, 6, 2, 1, 7, 9]
x.sort()
print x # [1, 2, 4, 6, 7, 9]
로그인 후 복사


2. 복사 정렬1) [:] 샤딩 방법

x =[4, 6, 2, 1, 7, 9]
y = x[ : ]
y.sort()
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9]
로그인 후 복사

참고: y = x[:]는 샤딩 작업은 목록 x의 모든 요소를 ​​y에 복사합니다. x가 단순히 y에 할당된 경우: y = x, y와 x는 여전히 동일한 목록을 가리키며 새 복사본이 생성되지 않습니다.
2) 정렬된 메서드
sorted는 정렬된 복사본을 반환하며 다음과 같이 유형은 항상 목록입니다.

x =[4, 6, 2, 1, 7, 9]
y = sorted(x)
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9] 
print sorted('Python') #['P', 'h', 'n', 'o', 't', 'y']
로그인 후 복사


3. 1. 맞춤형 cmp 비교 기능

def comp(x, y):
if x < y:
return 1
elif x > y:
return -1
else:
return 0
nums = [3, 2, 8 ,0 , 1]
nums.sort(comp)
print nums # 降序排序[8, 3, 2, 1, 0]
nums.sort(cmp) # 调用内建函数cmp ,升序排序
print nums # 降序排序[0, 1, 2, 3, 8]
로그인 후 복사
2. 맞춤형 키 및 역방향


1.reverse는 내림차순 정렬을 구현하며 부울 값을 제공해야 합니다. , 기본값은 False(오름차순)입니다. 2.key는 사용될 때 정렬 프로세스에 의해 호출되는 기능을 제공해야 합니다:

alist = [('2', '3', '10'), ('1', '2', '3'), ('5', '6', '7'), ('2', '5', '10'), ('2', '4', '10')]
# 多级排序,先按照第3个元素排序,然后按照第2个元素排序:
print sorted(alist, cmp = None, key = lambda x:(int(x[2]), int(x[1])), reverse = False)
-------------------------------------------------------------------------------------------
[('1', '2', '3'), ('5', '6', '7'), ('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10')]
로그인 후 복사


4. Operator.itemgetter 기능


operator 모듈에서 제공하는 itemgetter 기능 매개변수는 일련번호(즉, 개체에서 얻을 수 있는 데이터의 일련번호)인 데이터를 얻는 데 사용됩니다.

a = [1,2,3]
>>> b=operator.itemgetter(1)   //定义函数b,获取对象的第1个域的值
>>> b(a)
2
>>> b=operator.itemgetter(1,0) //定义函数b,获取对象的第1个域和第0个的值
>>> b(a)
(2, 1)
로그인 후 복사

operator.itemgetter 함수는 값을 구하는 함수가 아니라, 해당 함수를 객체에 적용하여 값을 구할 수 있는 함수를 정의하고 있다는 점에 유의해야 합니다.

정렬에서 itemgetter 사용법:

from operator import itemgetter
alist = [('2', '3', '10'), ('1', '2', '3'), ('5', '6', '7'), ('2', '5', '10'), ('2', '4', '10')]
# 多级排序,先按照第3个元素排序,然后按照第2个元素排序:
print sorted(alist, cmp = None, key = itemgetter(2, 1), reverse = False)
print sorted(alist, cmp = None, key = lambda x:itemgetter(2, 1)(x), reverse = False)
print sorted(alist, cmp = None, key = lambda x:map(int, itemgetter(2, 1)(x)), reverse = False)
--------------------------------------------------------------------------------------------------
[('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10'), ('1', '2', '3'), ('5', '6', '7')]
[('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10'), ('1', '2', '3'), ('5', '6', '7')]
[('1', '2', '3'), ('5', '6', '7'), ('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10')]
로그인 후 복사
위는 편집기에서 소개한 Python의 sort() 메서드 사용에 대한 기본 사항입니다. 도움주신 모든 분들께 감사드립니다. 궁금한 점이 있으시면 메시지를 남겨주시면 시간 내에 답변해 드리겠습니다.


-->

위 내용은 Python에서 sort()를 사용하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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