파이썬 sort()와 sorted()

단지·2023년 5월 8일
1
post-thumbnail

sort()는 리스트의 내장메서드이고,
sorted() 는 이터러블로부터 정렬된 새로운 리스트를 만드는 파이썬 내장함수이다

[5, 4, 2, 3, 1] 이라는 숫자로 이루어진 리스트가 있을 때
sort를 쓰려면
a = [5, 4, 2, 3, 1] 로 정의 후
a.sort() 로 정렬할 수 있지만,

정의 없이 간단히 sorted([5, 4, 2, 3, 1])로 사용할 수도 있다

문자열을 원소로 가지는 2차원 배열의 경우에 각각 적용해보면
tickets = [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]]

>>> tickets.sort()
>>> print(tickets)
>>> [['ATL', 'ICN'], ['ATL', 'SFO'], ['ICN', 'ATL'], ['ICN', 'SFO'], ['SFO', 'ATL']]

>>> print(sorted(tickets))
>>> [['ATL', 'ICN'], ['ATL', 'SFO'], ['ICN', 'ATL'], ['ICN', 'SFO'], ['SFO', 'ATL']]

동일한 결과를 얻을 수 있었다
요소중 일부만을 기준으로 정렬하고싶으면
from operator import itemgetter를 임포트하고
정렬시 key로 itemgetter(요소번호)를 주거나
람다함수를 이용해서 key=lambda x:x[1] 처럼 줄 수 있다

++
각 요소들을 먼저 정렬하고 전체를 정렬하는 거라고 생각했는데
숫자로 이루어진 2차원 배열을 동일하게 정렬해보니
numbers = [[10, 20],[20, 15],[50, 20], [40, 10]]
>>> print(sorted(numbers))
>>> [[10, 20], [20, 15], [40, 10], [50, 20]]

이번엔 앞뒤 순서가 바뀌지 않았다.
혼란의 연속 ㅇ0ㅇ

profile
'-'b

0개의 댓글