[Python] 리스트 정렬 sort(), sorted()

seohyun0206·2023년 8월 31일

python

목록 보기
1/1
post-thumbnail

sort()와 sorted()


리스트 정렬

python에서는 리스트를 정렬할 수 있는 sort()sorted()라는 함수가 존재한다.

sort()

  • sort()는 원배열 자체를 정렬한다.

  • 오름차순 정렬
    - reverse=False가 default다.

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

arr.sort()

print(arr) #[1, 2, 3, 4, 5]
  • 내림차순 정렬
    - 내림차순 정렬을 위해서는 reverse=True로 설정하면 된다.
arr = [1, 2, 3, 4, 5]

arr.sort(reverse=True)

print(arr) #[5, 4, 3, 2, 1]

sorted()

  • sorted()는 원배열은 그대로 두고 정렬된 배열을 반환한다.
  • 내림차순 정렬에는 sort()와 마찬가지로 reverse=True로 설정한다.
arr = [5, 3, 4, 2, 1]

#오름차순 정렬
sorted_arr = sorted(arr)
print(sorted_arr) #[1, 2, 3, 4, 5]
print(arr) #[5, 3, 4, 2, 1]

#내림차순 정렬
sorted_arr = sorted(arr, reverse=True)
print(sorted_arr) #[5, 4, 3, 2, 1]
print(arr) #[5, 3, 4, 2, 1]

key

  • 리스트를 원하는 기준으로 정렬하고 싶을 때 쓰는 매개변수이다.
  • 정렬 조건으로 사용할 함수를 key 값으로 주면 된다.
arr = ['나비야', '나', '이리날아오너라', '비야']

sorted_arr = sorted(arr, key=len)
print(sorted_arr) #['나', '비야', '나비야', '이리날아오너라']
print(arr) #['나비야', '나', '이리날아오너라', '비야']

arr.sort(key=len)
print(arr) #['나', '비야', '나비야', '이리날아오너라']
  • lambda 함수도 사용할 수 있다.
arr = ['key', 'apple', 'green', 'dad']

arr.sort(key=lambda x:x[1])

print(arr) #['dad', 'key', 'apple', 'green']
  • 내림차순 정렬도 가능하다.
arr = ['key', 'apple', 'green', 'dad']

sorted_arr = sorted(arr, key=lambda x:x[1], reverse=True)

print(sorted_arr) #['green', 'apple', 'key', 'dad']
print(arr) #['key', 'apple', 'green', 'dad']

2차원 리스트 정렬

  • 기본적으로 arr[0]을 기준으로 정렬하고 값이 같다면 arr[1]번을 기준으로 정렬한다.
arr = [(5, 3), (1, 2), (1, 0), (2, 3)]

arr.sort()

print(arr) #[(1, 0), (1, 2), (2, 3), (5, 3)]

key 이용하기

  • arr[1]을 기준으로 정렬
arr = [(5, 3), (1, 2), (1, 0), (2, 3)]

arr.sort(key=lambda x:x[1])

print(arr) #[(1, 0), (1, 2), (5, 3), (2, 3)]
  • arr[1]을 기준으로 내림차순 정렬
arr = [(5, 3), (1, 2), (1, 0), (2, 3)]

arr.sort(key=lambda x:-x[1])

print(arr) #[(5, 3), (2, 3), (1, 2), (1, 0)]
  • arr[1] 값이 같다면 arr[0]을 기준으로 정렬하기
arr = [(5, 3), (1, 2), (1, 0), (2, 3)]

arr.sort(key=lambda x:(x[1], x[0]))

print(arr) #[(1, 0), (1, 2), (2, 3), (5, 3)]

이처럼 key 값을 이용한다면 원하는 조건으로 리스트를 정렬할 수 있다.

2차원 리스트 정렬을 이용한 문제

BOJ 11650번
BOJ 11651번

profile
성장을 꿈꾸는 백엔드 개발자입니다😎

0개의 댓글