sort(*, key=None, reverse=False)
list를 정렬할 때 사용한다.
내부적으로 < 연산자만을 이용해 요소들을 비교한다.
예외는 처리하지 않으며 작동 중 예외가 발생할 시, 하던 작업을 멈춰 부분만 정렬된 채로 남게 된다.
파라미터로 key, reverse를 전달받는다.
key
: 비교할 값을 만들어 낼 함수를 지정해준다.
기본값은 None이다.
(key를 지정해주지 않으면 < 연산자를 사용할 수 있는 변수형만 정렬할 수 있다.)
reverse
: 내림차 순으로 정렬할 지 정할 수 있다.
기본값은 false로 오름차 순으로 정렬된다.
기본 사용 예제
arr = [4, 2, 1, 3]
arr2 = arr.copy() #얕은 복사
arr.sort()
arr2.sort(reverse=True)
print(arr)
print(arr2)
output >
[1, 2, 3, 4]
[4, 3, 2, 1]
문자열을 길이 순으로 정렬해보자
arr = ["hi", "a.....", "my name", "is", "soongle!!"]
arr.sort()
print(arr)
output >
['a.....', 'hi', 'is', 'my name', 'soongle!!']
arr = ["hi", "a.....", "my name", "is", "soongle!!"]
arr.sort(key=len)
print(arr)
output >
['hi', 'is', 'a.....', 'my name', 'soongle!!']
전달받은 배열의 인덱스 값을 저장하여 정렬해보자
arr = [22, 11, 33, 46, 67, 888, 1]
def sortElement(arr):
newArr = [[idx, element] for idx, element in enumerate(arr)]
print("before :", newArr)
newArr.sort(key=lambda x:x[1])
print("after :", newArr)
sortElement(arr)
output >
before : [[0, 22], [1, 11], [2, 33], [3, 46], [4, 67], [5, 888], [6, 1]]
after : [[6, 1], [1, 11], [0, 22], [2, 33], [3, 46], [4, 67], [5, 888]]