본문 바로가기

프로그래밍 언어/Python 공부

Python 정렬하기 - list

반응형

참고자료는 여기입니다.

python의 리스트는 .sort() 메소드를 이용해서 정렬할 수 있다. 단, 이 때의 정렬은 제자리 정렬로 호출한 원본 리스트의 내부 원소들의 순서를 바꾸게 된다. 실제로 메모리 사용량을 극히 제한하는 특수한 상황이 아니면 제자리 정렬보다는 sorted 함수를 이용하는 것이 더 안전하다.

 

1. 역순으로 정렬하기

sort함수나 sorted 함수에서 reverse 파라미터에 True값을 주면 가능하다.

 

2. 정렬 조건 적용하기

정렬하고자 하는 연속열이 단순히 숫자값이나 문자열이라면 sorted 함수는 크기순 혹은 사전순으로 정렬한다. 별도의 정렬기준을 사용해야 할 필요가 있을 때는 key 파라미터를 사용하여 정렬 기준이 되는 값을 정할 수 있다.

 

예를 들어, 어떤 학생들의 리스트를 수학 점수가 높은 순으로 정렬하고 싶다면

names_sorted_by_math = [x.name for x in sorted(student, key = lambda x: x.math_score, reverse = True)] 

다음과 같이 사용할 수 있다.

 

3. 두 개 이상의 정렬 조건 사용하기

key 함수의 리턴값이 (첫번째 기준, 두번째 기준) 형식의 튜플이면 된다.

둘 다 같은 정순 혹은 역순이면 상관 없지만 둘의 정렬 순서가 반대일 경우 예시를 들어보겠다.

sorted(sorted(a, key = lambda x: x[0]), key = lambda x: x[1], reverse= True)

x[0] 은 정순으로, x[1]은 역순으로 정렬이 가능하다.

 

백준 10814번) 나이순, 나이가 동일하다면 이름순으로 정렬하기 예제

n = int(input())
people = [0] * (n+1)
for i in range(1,n+1):
    age, name = input().split(" ")
    people[i] = {'idx': i,'age': int(age), 'name': name}
    
a = sorted(people[1:], key = lambda x:(x['age'], x['idx']))
#print(people)
for i in range(len(a)):
    print(a[i]['age'], a[i]['name'])
    
반응형

'프로그래밍 언어 > Python 공부' 카테고리의 다른 글

defaultdict  (0) 2019.09.02
Python 자료형 공부 - dictionary  (0) 2019.08.19
Python 자료형 공부 2 - array  (0) 2019.08.19
Python 입력값 저장하기  (0) 2019.08.14
Python 자료구조 공부 - List(Stack, Queue)  (0) 2019.08.14