👉 sort()
- 리스트의 원본을 직접 수정 정렬
👉 sorted()
- 정렬된 새로운 리스트 반환 (원본 리스트는 그대로)
words1 = ["ad", "ac", "a", "aaa", "g", "f", "d", "aa"]
words2 = ["ad", "ac", "a", "aaa", "g", "f", "d", "aa"]
def temp_function(a):
return len(a), a
# 아래의 두 결과는 같다
words1.sort(key=temp_function)
words2.sort(key=lambda x: (len(x), x))
# words1 결과
# ['a', 'd', 'f', 'g', 'aa', 'ac', 'ad', 'aaa']
# words2 결과
# ['a', 'd', 'f', 'g', 'aa', 'ac', 'ad', 'aaa']
# sorted 에 key 사용법
# sort_word = sorted(word, key=lambda x: (len(x), x))
위의 코드에서 보다시피 함수를 추가해서 길이를 비교 후 같은 길이에서는 알파벳 순으로 정렬한 것이다.
def temp_function(a):
return -len(a), a
# 아래의 두 결과는 같다
words1.sort(key=temp_function)
words2.sort(key=lambda x: (-len(x), x))
print(words1)
# words1 결과
# ['aaa', 'aa', 'ac', 'ad', 'a', 'd', 'f', 'g']
# words2 결과
# ['aaa', 'aa', 'ac', 'ad', 'a', 'd', 'f', 'g']
위의 코드 처럼 함수의 리턴값에 -를 붙여주면 역순이된다.
words2.sort(key=lambda x: (-len(x), x), reverse=True) 처럼 reverse=True 를 추가하여 역순으로 만들 수 있다. 하지만 전체 결과 값이 역순이되므로 기준을 여러개를 이용할때는 주의해야한다.