[Python] 리스트 정렬

Yerin·2020년 2월 8일
0

study-python

목록 보기
18/18

sort method

파이썬에서는 리스트를 정렬할때 .sort() method를 쓸 수 있다. sort() 메소드는 리턴값이 없으며(None 리턴) 리스트 객체 메소드라는 한계를 갖는다. 하지만 sorted 메소드를 사용하면 말그대로 '정렬된' 리스트 사본을 만들어준다. 예를 들어, 다음과 같이 names라는 리스트가 있을때 sort 함수를 써서 알파벳 순으로 정렬할 수 있다.

참고로 숫자들로 이루어진 리스트가 주어지면 가장 작은 수부터 순서대로 정렬된다.

정렬 조건 적용하기

정렬하는 것까지는 할 수 있는데, 이외에 별도의 조건을 추가하고 싶을때가 있을것이다.

  • 단어를 길이순으로 정렬하고 싶을때
  • 학생의 정보가 담긴 클래스의 인스턴스 리스트를 '수학' 성적순으로 정렬하고 싶을때
  • 어떤 정수의 리스트를 5로 나눈 나머지가 작은 순으로 정렬하고 싶을때 등...

이때 key=parameter 를 쓸 수 있다.

위와 같이 key=len을 추가하면 단어들이 길이순으로 정렬되어 나온다.

key 파라미터는 함수를 받을 수 있는 파라미터여서 기본적으로 람다식을 쓸 수 있다고 한다.
여기서 람다식은 '나무위키'에 따르면, 익명의 함수를 지칭하는 용어라고 한다... 람다식에 대해서는 다음에 자세히 다루어보도록 하겠다. 예시로 다음과 같은 경우에 적용해볼 수 있다.

사전의 내용 정렬

사전의 값만을 정렬할때 .values() 메소드를 이용할 수 있다. 이 값은 리스트가 아니지만 iterable protocol을 따르고 있어서 sorted 함수를 통해 정렬된 리스트로 만들 수 있다.

사전의 키순으로 정렬하고 싶을때 .items() 메소드를 쓸 수 있다. 정렬된 키를 사전의 값으로 매핑하면 되는데, 다음과 같이 정렬된 키를 얻고 각 키에 대응되는 값으로 구성되는 리스트를 만들면 된다.

keys = sorted(d.items())
print([d[key] for key in keys])

.items는 사전의 각 요소의 키-값 쌍인 튜플들을 리턴한다. 이 튜플에서 첫번째 요소인 키순으로 정렬한 후, 두번째 요소만 추려낸다.

이 부분은 정확히 뭔소린지 모르겠으므로 더 정리가 필요할 것 같다....

참고: https://soooprmx.tistory.com/entry/%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%A0%95%EB%A0%AC%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95#recentEntries

profile
졸꾸 !!!

0개의 댓글