Python - sort(), sorted()

Dalbi·2021년 4월 11일
0
post-thumbnail

python에서 리스트 또는 배열을 정렬할때 사용하는 함수들이다. 기본적인 사용법 이외 헷갈리는 부분을 정리해 두려한다.

sort()

sort()는 흔히 리스트내 숫자를 순서대로 배열할때 사용되지만 사실 문자열에서도 사용이 가능하다.

위의 예시문을 보자. a는 인칭 대명사라고 하는것의 일부분이다.

a.sort()를 사용하니 정렬이 되었다. 분명 정렬이 되었는데 무슨 기준인지 명확하지 않아보인다.

이는 각 글자의 첫글자의 유니코드 순서대로 먼저 정렬하고 같은 글자가 있으면 그 다음 글자의 유니코드 순서로 배열하는것을 반복하여 정렬한것이다. 즉 문자열 내의 글자 하나하나의 유니코드를 기준으로 정렬된 것이다.

때문에 대문자인 I가 제일앞에오며 he다음 her이 오고 hers이 그다음에 있다.

sort()내에 들어가는 옵션들이다. reverse는 True로 지정할 경우 내림차순으로 정렬이 가능하다.

key는 정렬이 되는 기준에 대해서 함수식을 작성하면 된다.

key를 len으로 지정해주어 글자수가 작은것부터 정렬되었다.

이처럼 lambda식으로도 지정이 가능하다.

lambda x : x[3]이라는 식을 통해 인덱스가 3인 요소를 비교해서 정렬한다는 의미이다.

sorted()

sorted()또한 위의 sort()와 같이 key와 reverse를 옵션으로 받아 작성이 가능하다.

하지만 sort()와는 다르게 함수 내에 첫 인자로 배열을 받고 원본 배열에 대해서는 수정을 하지않고 따로 변수에 저장을 해주어야한다.

또한 sorted()는 딕셔너리 형태에 대해서도 정렬이 가능하다.

딕셔너리의 키를 글자길이 기준으로 리스트를 만들었다.

위에서부터 순서대로 정리하자면

  • c의 키를 기준으로 정렬하여 키를 리스트로 작성.
  • c의 벨류를 기준으로 정렬하여 벨류를 리스트로 작성.
  • c의 키를 기준으로 정렬하여 키와 벨류의 튜플로 리스트를 작성.

여기서 key에 lambda를 사용하면 더 다양한 방식으로 정렬이 가능하다.

위에서부터 순서대로 정리하자면

  • c의 벨류의 인덱스가 1인 글자를 기준으로 정렬하여 벨류를 리스트로 작성.
  • c의 키를 기준으로(items()일때 x[0]는 키를 의미) 키와 벨류의 튜플로 리스트를 작성.
  • c의 벨류를 기준으로(items()일때 x[1]는 벨류를 의미) 키와 벨류의 튜플로 리스트를 작성.

이처럼 다양한 방법으로 사용이 가능하다.

profile
백엔드..?

0개의 댓글