sort() vs sorted()

Sooin Yoon·2025년 3월 28일

sort

  • in-place 리스트 자체를 정렬
  • 반환값 None
  • 리스트에서만 사용
nums = [3,1,2]
nums.sort()
print(nums)    
<<< [1,2,3]

sorted

  • 정렬된 새 리스트 반환
  • 모든 반복 가능한(iterable)객체에 사용 가능
nums = [3,1,2]
nums_list = sorted(nums)
print(news_list)
<<< [1,2,3]

key, reverse 옵션

  • key : 정렬 기준을 커스터마이징할때 사용
  • reverse : 내림차순 정렬 옵션
words = ["banana", "apple", "kiwi"]
words.sort(key=len)  #문자열 기준 4, 5, 6
<<< ['kiwi', 'apple', 'banana']

value = [[5, 3], [2, 8], [4, 5]]

# 첫 번째 값 기준 정렬
value.sort(key=lambda x: x[0])
<<< [[2,8], [4,5], [5,3]]
# 두 번째 값 기준 정렬
value.sort(key=lambda x: x[1])
<<< [[5,3], [4,5], [2,8]]
# 두 값의 합 기준 정렬
value.sort(key=lambda x: x[0] + x[1], reverse=True)
<<< [[2, 8], [4, 5], [5, 3]]

예제문제

배열의 다음과 같이 있을때 합을 기준으로 정렬해주고 만약 합이 같다면 첫번째 항을 기준으로 정렬

value = [[5, 3], [6, 9], [4, 5], [6, 3], [2, 8], [5, 4]]  
new_value = sorted(value, key= lambda x: (x[0]+x[1], x[0]), reverse=True)
<<< [[6, 9], [2, 8], [6, 3], [5, 4], [4, 5], [5, 3]]

sort할 때, 기본 정렬시에는 대문자가 소문자보다 작게 간주됨

chars = ['a', 'b', 'A', 'B']
print(sorted(chars))
<<< 출력: ['A', 'B', 'a', 'b']

✅ 대소문자 무시하고 정렬하고 싶다면?

chars = ['a', 'b', 'A', 'B']
print(sorted(chars, key=str.lower))  
# 출력: ['a', 'A', 'b', 'B']

0개의 댓글