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]
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')]
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()를 사용하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!