-
python sorted알고리즘 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]
가 나온다. 여튼 이제 내가 하려고 하는 사람의 이름을 나이순으로 정렬해라. 근데 나이가 같으면 키가 큰 순으로 앞에 정렬 해라" 라는 조건이 있을 때 푸는 형식이다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersclass Human: def __init__(self,name, age, height): self.name = name self.age = age self.height = height if __name__ =='__main__': f_human = Human("se hoon", 25, 175) s_human = Human("ji hyo", 18, 173) t_human = Human("jeong un", 25, 169) human_list = [f_human, s_human, t_human] answer = sorted(human_list, key = lambda human : (human.age, -human.height)) for a in answer: print(a.name) # ji_hyo # se_hoon # jeong u 여기서 key는 정렬할 기준을 얘기 해준다. 주의점은 key = lambda human : (human.age, -human.height) 일 것이다. 여기서 human은 human_list의 값 한개를 의미한다. 그니까 f_human이나 s_human 이렇게 하나를 의미한다 여기서 그냥 human.age 를 한것은 이름은 오름차순으로 -human.height는 키는 내림차순으로 정렬하겠다. 이 의미이다.
'알고리즘' 카테고리의 다른 글
이진 탐색 트리 (0) 2021.02.10 leetcode 5번 Longest_palindrom (0) 2020.12.29 leetcode_334(Reverse_String) (0) 2020.12.20 leetcode 125.Valid Palindrome (0) 2020.12.20 Insertion sort (0) 2020.12.08