Python - 리스트 정렬 sort(), sorted()

강현구·2022년 4월 4일
0

Python

목록 보기
21/21

sort()와 sorted()

python을 처음 배우던 시기에 리스트를 정렬하는 방법으로 sort()와 sorted() 두가지를 사용한다.
하지만 각각의 쓰임에 대해서는 이해가 되지않은 상태로 쓰고 있었고, 때문에 번번히 반대로 사용하게 된다.
이제는 좀 더 확실히 알게 된 둘의 차이에 대해서 적어본다.

sort()

sort()는 기본적으로 LIST.sort()와 같이 쓰이는 리스트의 메서드이다.
메서드 = 리스트라고하는 타입, 다시 말해 리스트라고하는 클래스의 내부에 정의되어 있는 클래스의 함수인 sort()를 사용하는 것이다.

그렇기에 정렬할 대상을 함수의 괄호안의 매개변수로 주는 것이 아니라, 앞에 붙여주는데 정렬이 가능한 것이다. 다시 보면 LIST.sort()의 형태는 LIST라고 하는 인스턴스에 그 클래스의 메서드를 사용하고 있는 형태이다. 그래서 매개변수로 주지 않아도 정렬을 할 수가 있는 것이고, 원래 대상자체를 변경시킬 수 있게된다.

sorted()

sorted()는 sorted(LIST)로 쓰이게 되며 python의 내장함수이다.
즉, 함수로서 어떤 값을 ()안에 매개변수로 받게 되고 그에 대한 연산값을 return으로 반환하게 된다. 이에 따라 이 함수를 쓸 때는 어떤 변수에 반환된 값을 전달하는 방식으로 쓰는게 일반적이고, 원래의 값은 변경하지 않는다.
정렬할 때, 정렬의 기준으로 숫자의 대소나 알파벳의 사전순서가 아니라 다른 방법을 취할 수도 있다. -> 매개변수에 key = 'sth'을 주게되면 sth에 따른 기준으로 정렬해준다. (각 단어의 길이와 같은 기준을 lambda로 만들어서 주면 된다.)
이때 그 기준에 따른 값이 동일한 정렬 순서를 갖게되는 요소가 있다면, 원래의 순서를 유지한 채로 반환해준다.

profile
한걸음씩

0개의 댓글