반응형
파이썬 정렬하기 - sort(), sorted(), reverse()
sort()
기본값은 오름차순 정렬이고, reverse옵션 True는 내림차순으로 정렬하게 됩니다.
a= [3, 1, 9, 7, 5]
a.sort()
print(a)
[1, 3, 5, 7, 9]
a= [3, 1, 9, 7, 5]
a.sort(reverse=True)
print(a)
[9, 7, 5, 3, 1]
sort는 key 값을 전달인자로 주어 정렬을 할 수도 있습니다.
아래는 string 객체를 단어로 구분하여 리스트로 만들고, 단어의 수를 key로 설정하여 정렬을 해보았습니다.
a= "hello. my name is zidarn"
a = a.split()
a.sort(key=len)
print(a)
['my', 'is', 'name', 'hello.', 'zidarn']
reverse()
reverse()는 내림차순으로 정렬하고, sort(reverse=True) 한 것과 동일합니다.
a= [3, 1, 9, 7, 5]
a.reverse()
print(a)
[9, 7, 5, 3, 1]
sorted()
핵심이 되는 것은 이 sorted() 함수입니다.
이 함수를 사용하는 방법은 두가지가 있습니다.
1) 전달인자 1개로 리스트를 넣는 방법이 있습니다.
sorted 함수는 리스트를 반환하게 되고, 오름차순으로 정렬하게 됩니다.
a= [3, 1, 9, 7, 5]
b = sorted(a)
print(b)
[1, 3, 5, 7, 9]
2) 전달인자 2개로 하나는 리스트를 넣고, 하나는 key 값을 넣게 됩니다.
( sorted(strings, key=lambda element:element[n]) : lambda는 익명 함수 )
string 객체를 단어로 구분하여 리스트로 만들고, 단어의 수를 key로 설정하여 정렬을 해보았습니다.
a= "hello. my name is zidarn"
a = a.split()
b = sorted(a, key=len)
print(b)
튜플로 되어 있는 내용도 정렬이 가능합니다.
key 값은 여러 개를 설정할 수 있습니다. 첫번째 element로 정렬하였을 때, 동일하다면, 그 다음 설정된 element로 정렬할 수 있습니다.
아래 예시를 보시면 쉽게 파악할 수 있을 것입니다.
student_tuples = [
(2016, 'brown', 'A', 15),
(2015, 'Kevin', 'B', 12),
(2014, 'Cain', 'B', 10),
(2015, 'Crown', 'B', 5)
]
t = sorted(student_tuples, key=lambda student: (student[0], student[1]))
print(t)
[(2014, 'Cain', 'B', 10), (2015, 'Crown', 'B', 5), (2015, 'Kevin', 'B', 12), (2016, 'brown', 'A', 15)]
key 값에 마이너스 '-'를 붙이면 내림차순으로 정렬하게 됩니다.
student_tuples = [
(2016, 'brown', 'A', 15),
(2015, 'Kevin', 'B', 12),
(2014, 'Cain', 'B', 10),
(2015, 'Crown', 'B', 5)
]
t = sorted(student_tuples, key=lambda student: (-student[0], student[1]))
print(t)
[(2016, 'brown', 'A', 15), (2015, 'Crown', 'B', 5), (2015, 'Kevin', 'B', 12), (2014, 'Cain', 'B', 10)]
반응형
'파이썬 > 파이썬 알고리즘' 카테고리의 다른 글
파이썬 알고리즘 / combinations(), permutations() - 모든 조합, 순열 구하기 (0) | 2020.10.22 |
---|