알고리즘

python sorted

AlgoPoolJa 2021. 2. 5. 15:48

파이썬에서 기본적으로 sort는 timsort를 사용한다.

오늘 해볼 포스팅은 파이썬에서 정렬 할 때 이런 생각이 많이 든다. "사람의 이름을 나이순으로 정렬해라. 근데 나이가 같으면 키 순으로 정렬해라" 이렇게 물을 때 어떻게 해야 하는지 포스팅 하려고 한다. 

 

원래 기본적으로 파이썬에서는 리스트에서 sorting을 할 때

some_list = [1,2,3,4,5]

some_list.sort() # 결과값 [1,2,3,4,5]

 

 

이렇게 sort는 기본적으로 오름차순으로 정렬된다. 물론 내림차순으로 정렬할 수 도 있다. 그럴땐

some_list.sort(reverse=True) # 결과값 [5,4,3,2,1] 

가 나온다. 여튼 이제 내가 하려고 하는 사람의 이름을 나이순으로 정렬해라. 근데 나이가 같으면 키가 큰 순으로 앞에 정렬 해라" 라는 조건이 있을 때 푸는 형식이다.

여기서 key는 정렬할 기준을 얘기 해준다. 주의점은 key = lambda human : (human.age, -human.height) 일 것이다. 여기서 human은 human_list의 값 한개를 의미한다. 그니까 f_human이나 s_human 이렇게 하나를 의미한다 여기서 그냥 human.age 를 한것은 이름은 오름차순으로 -human.height는 키는 내림차순으로 정렬하겠다. 이 의미이다.