[Python] sort()(2차원 배열 정렬)

숭글·2023년 1월 31일
0

sort(*, key=None, reverse=False)

list를 정렬할 때 사용한다.
내부적으로 < 연산자만을 이용해 요소들을 비교한다.
예외는 처리하지 않으며 작동 중 예외가 발생할 시, 하던 작업을 멈춰 부분만 정렬된 채로 남게 된다.

파라미터로 key, reverse를 전달받는다.

parameter

  • key
    : 비교할 값을 만들어 낼 함수를 지정해준다.
    기본값은 None이다.
    (key를 지정해주지 않으면 < 연산자를 사용할 수 있는 변수형만 정렬할 수 있다.)

  • reverse
    : 내림차 순으로 정렬할 지 정할 수 있다.
    기본값은 false로 오름차 순으로 정렬된다.

Example

기본 사용 예제

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!!']
  • key를 지정해주지 않으면 알파벳 순으로 정렬한다.
arr = ["hi", "a.....", "my name", "is", "soongle!!"]

arr.sort(key=len)

print(arr)

output >

['hi', 'is', 'a.....', 'my name', 'soongle!!']
  • len함수를 key로 전달하여 길이를 기준으로 정렬하게했다.

전달받은 배열의 인덱스 값을 저장하여 정렬해보자

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]]

📖 docs<list.sort>

profile
Hi!😁 I'm Soongle. Welcome to my Velog!!!

0개의 댓글