Sorting Function

파이썬의 sorting 함수


개념

sort 함수는 말 그대로 정렬을 위한 함수이다. 리스트 정렬은 물론 문자도 정렬이 가능하다.

예시

리스트 정렬 시에

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

문자도 문제 없이 정렬 가능하다(리턴값 = 리스트)

1
2
3
stringB = 'zbdaf'  
sorted(stringB)
>>> ['a', 'b', 'd', 'f', 'z']

위에서 stringB의 결과를 다시 결합하고 싶으면 .join을 쓸 수 있다.

1
2
3
"".join(sorted(stringB))
#참고 : join 에서 "X" 결합 사이에 X를 삽입
>>> abdfz

리스트 자료형에서 sort 메소드를 이용하면 리스트 자체를 정렬할 수 있다(제자리 정렬, in-place-sort). 리턴값을 따로 없다.

  • alist.sort() #리스트 자체를 정렬
  • alist = blist.sort() #잘못된 문장

sorted에서 key= 옵션을 통해 정렬을 위한 기준(or 함수)를 별도 지정 가능하다.

len을 통해 정렬하는 경우

1
2
3
4
listC = ['ccc', 'aaaa', 'd', 'bb']  
sorted(c, key=len)
>>> ['d', 'bb', 'ccc', 'aaaa']
#알파벳 순서가 아니라 길이 순으로 정렬했다.

함수를 이용해 정렬하는 경우

1
2
3
4
5
listD = ['cde','cfc', 'abc']
sorted(listD, key=lambda s:(s[0], s[-1]))
>>> ['abc', 'cfc', 'cde']
#첫번째 정렬 기준은 s[0]이고 두번째 정렬 기준이 s[-1]
#첫번째 단어 a, c ,c 를 통해 먼저 abc가 앞에 오고, 같은 두 놈은 마지막 단어 c와 e를 통해 cfc가 두번째로 왔다.