Python/Algorithm

[Python, Algorithm] sorted() sort

JMob 2020. 9. 30. 16:13
728x90
반응형

출처: 파이썬 알고리즘 인터뷰

 

Python에서는 기본적으로 Timsort를 사용한다.

Timsort는'실제 데이터는 대부분 이미 정렬되어 있을 것이다'라는 가정하고 실제 데이터에서 고성능을 낼 수 있도록 설계된 알고리즘이다.

 

sorted() 사용

sorted() 함수는 입력받는 String or List를 List로 반환한다.

str01 = 'aieosdkdslerb'
print(sorted(str01))

print:

['a', 'b', 'd', 'd', 'e', 'e', 'i', 'k', 'l', 'o', 'r', 's', 's']

 

key 지정

sorted() 함수는 정렬을 위한 key 옵션이 있다.

 

ex1) len 지정

key로 len을 지정하면 길이가 짧은 순으로 정렬된다.

list01 = ['aaa', 'bb', 'c']
print(sorted(list01))
print(sorted(list01, key=len))

print:

['aaa', 'bb', 'c']
['c', 'bb', 'aaa']

 

ex2) 문자 순서 지정

key로 list의 몇 번째를 기준으로 지정할지 정할 수 있다.

case 1: 첫 번째 문자 기준

case 2: 마지막 문자 기준

case 3: 첫 번째 문자 기준으로 정렬 후 마지막 문자 기준으로 정렬

list01 = ['abc', 'cba', 'bcb', 'deg', 'aez']
print('case 1: ' , sorted( list01, key= lambda s:(s[0])) )
print('case 2: ' , sorted( list01, key= lambda s:(s[-1])) )
print('case 3: ' , sorted( list01, key= lambda s:(s[0], s[-1])) )

print:

case 1:  ['abc', 'aez', 'bcb', 'cba', 'deg']
case 2:  ['cba', 'bcb', 'abc', 'deg', 'aez']
case 3:  ['abc', 'aez', 'bcb', 'cba', 'deg']
728x90
반응형