티스토리 뷰


파이썬 리스트는 sort() 라는 메소드를 가지고 이 메소드는 리스트를 정렬된 상태로 변경한다. 또 sorted() 라는 내장 함수는 이터러블 객체로부터 정렬된 리스트를 생성한다.

파이썬에서 간단하게 정렬을 실행하려면 다음과 같이 sorted()를 호출하면 된다. sorted()는 기존의 리스트를 변경하는 것이 아니라 정렬된 새로운 리스트를 반환한다.

>>> sorted([4, 2, 3, 5, 1])
[1, 2, 3, 4, 5]

리스트의 메소드인 sort()를 사용하여도 정렬이 된다. 이 경우에는 리스트 자체를 변경해 버린다. 일반적으로 이것보다는 내장함수인 sorted()가 더 편리하다.

>>> myList = [4, 2, 3, 5, 1]
>>> myList.sort()
>>> myList
[1, 2, 3, 4, 5]

또한 sort()는 리스트만을 위한 메소드이지만 sorted() 함수는 어떤 이터러블 객체도 받을 수 있다. 예를 들어서 다음과 같은 딕셔너리 객체도 받을 수 있다.

>>> sorted({3: 'D', 2: 'B', 5: 'B', 4: 'E', 1: 'A'})
[1, 2, 3, 4, 5]

 

key 매개변수

객체의 데이터 중에서 특정한 데이터를 기준으로 정렬하기 위해 key 매개변수로 정렬을 하기 전에 각 요소에 대하여 적용되는 함수를 지정할 수 있다. 다음의 경우를 살펴보자.

>>> students = [
        ('홍길동', 3.9, 2016303),
        ('김철수', 3.0, 2016302),
        ('최자영', 4.3, 2016301),
]
>>> sorted(students, key=lambda student: student[2])
[('최자영', 4.3, 2016301), ('김철수', 3.0, 2016302), ('홍길동', 3.9, 2016303)]

lambda는 람다식을 나타낸 것으로 정렬을 하기 전에 호출되는 함수를 나타낸 것으로 student요소를 받아서 student[2]를 반환한다. 즉 정렬의 기준이 학생들의 학번이 되는 것이다.

 

오름차순 정렬과 내림차순 정렬

list.sort()와 내장함수 sorted()는 모두 reverse 매개변수를 받는다. reverse 변수는 부울형으로 True 이면 내림차순이 된다. 위의 예제에서 내림차순으로 정렬하려면 다음과 같이 한다.

>>> sorted(students, key=lambda student: student[2], reverse=True)
[('홍길동', 3.9, 2016303), ('김철수', 3.0, 2016302), ('최자영', 4.3, 2016301)]

  

'Python' 카테고리의 다른 글

[Python] 클래스와 객체  (0) 2018.10.27
[Python] COMPREHENSION (컴프리헨션)  (0) 2018.10.27
[Python] 리스트의 기초 연산들  (0) 2018.10.27
[Python] 시퀀스 자료형  (0) 2018.10.27
[Python] lambda 함수(무명 함수)  (0) 2018.10.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크