[Python] sort()와 sorted()로 정렬하기
이 글을 참고했다.
차이점
sort()
-> 기존의 리스트 변경sorted()
-> 정렬된 새로운 리스트 반환
sort()
sort()
를 이용하면 리스트 자체를 변경해 버린다.
lst = [6, 2, 7, 4]
lst.sort()
print(lst) # [2, 4, 6, 7]
오름차순 정렬과 내림차순 정렬
lst = [6, 2, 7, 4]
lst.sort(reverse = True)
print(lst) # [7, 6, 4, 2]
sorted()
sorted()
는 정렬된 새로운 리스트를 반환한다.
lst = [6, 2, 7, 4]
new_lst = sorted(lst)
print(lst) # [6, 2, 7, 4]
print(new_lst) # [2, 4, 6, 7]
dictionary 정렬
sort()
는 리스트만을 위한 메소드인 반면, sorted()
는 어떤 이터러블 객체도 받을 수 있다.
예를 들어서 다음과 같은 딕셔너리 객체도 받을 수 있다.
dic = {
3: 'D', 2: 'B', 5: 'B', 4: 'E', 1: 'A'
}
new_lst = sorted(dic)
print(dic) # {3: 'D', 2: 'B', 5: 'B', 4: 'E', 1: 'A'}
print(new_lst) # [1, 2, 3, 4, 5]
key 매개변수
객체의 데이터 중에서 특정한 데이터를 기준으로 정렬하기 위해 key 매개변수로 정렬을 하기 전에 각 요소에 대하여 적용되는 함수를 지정할 수 있다.
students = [
('홍길동', 3.9, 2016303),
('김철수', 3.0, 2016302),
('최자영', 4.3, 2016301),
]
new_stud = sorted(students, key=lambda x: x[2])
print(new_stud) # [('최자영', 4.3, 2016301), ('김철수', 3.0, 2016302), ('홍길동', 3.9, 2016303)]
lambda는 람다식을 나타낸 것으로 정렬을 하기 전에 호출되는 함수를 나타낸 것으로 x 요소를 받아서 x[2]를 반환한다.
즉 정렬의 기준이 학생들의 학번이 되는 것이다.
오름차순 정렬과 내림차순 정렬
lst = [6, 2, 7, 4]
new_lst = sorted(lst, reverse = True)
print(new_lst) # [7, 6, 4, 2]
💛 개인 공부 기록용 블로그입니다. 👻