파이썬에서는 내장함수 sort(), sorted()를 이용하여 간단하게 정렬을 수행할 수 있어용
sort()
리스트를 정렬하여 변경하고 None을 반환합니다.
복사본을 만들필요가 없으므로 sorted()보다 빠릅니다.
sorted()
어떤 이터러블 객체도 받을 수 있습니닷.
새로운 정렬된 목록을 반환하며 원래 목록은 영향을 받지 않습니다..
sort()함수
오름차순 정렬
numbers = [2, 1, 3, 4, 1]
numbers.sort()
print(numbers)
결과
[1, 1, 2, 3, 4]
내림차순 정렬
numbers = [2, 1, 3, 4, 1]
numbers.sort(reverse=True)
print(numbers)
결과
[4, 3, 2, 1, 1]
sorted() 함수
오름차순 정렬
numbers = [2, 1, 3, 4, 1]
print(sorted(numbers))
결과
[1, 1, 2, 3, 4]
내림차순 정렬
numbers = [2, 1, 3, 4, 1]
print(sorted(numbers,reverse=True))
결과
[4, 3, 2, 1, 1]
key 매개변수 이용
sorted()함수는 key 매개변수를 이용하여 조금 더 정교한 정렬을 제공한다!!
key 인자에 함수를 넘겨주면 해당 함수의 반환값을 비교하며 순서대로 정렬합니당.
예시1)
sorted(numbers, key=lambda x:x[0])
tuples = [(6,0), (9,5), (10,4), (2,7), (5,2)]
print(sorted(tuples,key = lambda x : x[0]))
결과
[(2, 7), (5, 2), (6, 0), (9, 5), (10, 4)]
리스트의 원소로 튜플이 있고 튜플의 첫번째 값 x[0]으로 오름차순 정렬합니다.
예시2)
sorted(numbers, key=lambda x:(x[0], -x[1]))
튜플의 첫번째값으로는 오름차순, 두번째 값으로는 내림차순 정렬을 해보겠습니당
tuples = [(6,0), (6,5), (10,4), (2,7), (6,2)]
print(sorted(tuples,key = lambda x : (x[0],-x[1])))
결과
[(2, 7), (6, 5), (6, 2), (6, 0), (10, 4)]
예시3)
students 자료형에서 두번째 값 오름차순, 세번째 값 내림차순 정렬입니다.
students = [
('홍길동', 3.9, 20210325),
('김철수', 3.0, 20210205),
('최자영', 4.3, 20210125),
('개똥이', 4.3, 20210120),
]
print(sorted(students, key=lambda students : (students[1],-students[2])))
결과
[('김철수', 3.0, 20210205), ('홍길동', 3.9, 20210325), ('최자영', 4.3, 20210125), ('개똥이', 4.3, 20210120)]
'python' 카테고리의 다른 글
[Python] 순열, 조합 (0) | 2021.04.06 |
---|---|
[Python] zip 함수 (0) | 2021.04.01 |
join과 split (0) | 2020.06.29 |
[Python] enumerate (0) | 2020.06.29 |
[Python] for문 index로 접근 (0) | 2020.05.28 |