dmswl

[파이썬 문법] sort, sorted 등 본문

코테 공부/알고리즘

[파이썬 문법] sort, sorted 등

dmswl. 2023. 4. 12. 17:53

리스트.sort() : 리스트를 제자리 정렬. inplace = True 느낌.

 

None 값을 리턴하니

리스트2 = 리스트1.sort() (X)

 

sorted(리스트)  : 정렬 결과를 별도로 리턴

 

⭐ key= 옵션을 지정해서 정렬을 위한 키 또는 함수를 별도로 지정할 수 있음.

 

ex) 정렬을 위한 함수로 길이를 구하는 len을 지정한 경우

=> 문자열 알파벳 순서가 아닌 길이 순서로 정렬됨.

>>>	c = ['ccc', 'aaaa', 'd', 'bb']
>>>	sorted(c, key = len)
['d', 'bb', 'ccc', 'aaaa']

 

ex) 첫 문자열과 마지막 문자열 순으로 정렬하기

a = ['cde', 'cfc', 'abc']

def fn(s):
	return s[0], s[-1]
    
 print(sorted(a, key = fn))
 
 ----------------------------
 ['abc', 'cfc', 'cde']

 

만약 그냥 sorted(a) 를 했다면 문자열의 문자 순서대로 비교해서

'abc', 'cde', 'cfc' 순서로 출력이 됐을 것이다.

 

하지만, key로 fn을 넣어줬고, s[0] (첫번째 문자) 다음  s[-1] (마지막 문자) 를 보고 정렬하도록 key를 줬기 때문에

'cfc'가 'cde' 보다 먼저 온 것을 확인할 수 있다.

 

이를 굳이 따로 함수로 정의하지 않고 lambda를 이용해서 한 줄로 정리할 수 있다.

 

a = ['cde', 'cfc', 'abc']
    
 print(sorted(a, key = lambda s: (s[0], s[-1])))
 
 ----------------------------
 ['abc', 'cfc', 'cde']

+ 내림차순 정렬하고 싶으면

reverse = True

 

옵션 넣어주기!

Comments