반응형

파이썬 정렬하기 - 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)]
반응형

+ Recent posts