[Python] 파이썬 리스트(List) 정렬

2021. 9. 16. 23:18Programming/Python

728x90
  1. 먼저 리스트 자료구조에서 sort 멤버 함수를 호출하면 작은 값이 앞으로, 큰 값이 뒤로 오는 "오름차순" 정렬이 기본이다. 여기서 인자로 reversed=True 를 주면 반대로 정렬되는 것.
    li = [3,1,4,5]
    li.sort() # [1,3,4,5]
    li.sort(reverse=True) # [5,4,3,1]​
    그리고 sort() 함수의 리턴은 None 이라서 값으로 받아올 때 쓰면 안된다.

  2. li = [1,5,3,2] res = li.sort() # None 이 들어감
  3. sort 함수의 인자로 key 를 줄 수 있는데, 이 key에 해당하는 값을 기준으로 정렬을 해주겠다는 것이다. key에다가는 함수를 넣어줄 수 있다. "len" 같은 값을 넣어도 된다.
    res = [[5,2,1],[4,3,2],[9,0,1]]
    res.sort(key=lambda x: x[1]) # 1번 인덱스 기준으로 정렬
    print(res) # [[9, 0, 1], [5, 2, 1], [4, 3, 2]]​
    lambda식은 다음에 따로 정리해봐야겠다.
  4. 여러 값을 동시에 정렬하고 싶으면, tuple 이나 list에 넣고 한번에 정렬을 돌리면 된다. 
    res = [[4,2,1],[4,3,2],[4,0,1]]
    res.sort()
    print(res) # [[4, 0, 1], [4, 2, 1], [4, 3, 2]]​
     값이 모두 세 개 있는데, 맨 앞에 값을 비교해서 가장 작은 값은 가장 앞으로, 만약 값이 같다면 그 다음 숫자가 작은 값이 앞으로.. 이런식으로 정렬이 된다.!! 원소의 개수가 동일하지 않아도 정렬이 되는데, 값이 없어서 어떤 수를 넣어도 그 수보다 작게 나온다.
    res = [[4],[4,3,2],[4,-9999999999,1]]
    res.sort()
    print(res) # [[4], [4, -9999999999, 1], [4, 3, 2]]​

그 외에도 custom comparator로 정렬하는 방법도 있고 

'Programming > Python' 카테고리의 다른 글

[Python] 기초문법 - 자료형  (0) 2021.07.19
[Python] 기초문법 - 입출력  (0) 2021.07.19