반응형

 파이썬에서는 sort(), sorted() 함수를 사용하여 간단히 오름차순으로 정렬할 수 있으며 reverse = True를 같이 사용하여 내림차순으로도 간단히 정렬할 수가 있습니다. 뿐만아니라 key = lambda를 사용하여 특정 요소를 기준으로 정렬의 기준을 정해줄 수 있습니다.


key가 하나일 때 key=lambda를 활용한 정렬의 예시입니다.

test = [ (1, 8), (2, 3), (7, 9), (6, 1), (4, 5) ]

# 기본 오름차순 정렬
print(sorted(test)) # [(1, 8), (2, 3), (4, 5), (6, 1), (7, 9)]
# x를 기준으로 오름차순 정렬
print(sorted(test, key = lambda x:x)) # [(1, 8), (2, 3), (4, 5), (6, 1), (7, 9)]
# x[0]을 기준으로 오름차순 정럴
print(sorted(test, key = lambda x:x[0])) # [(1, 8), (2, 3), (4, 5), (6, 1), (7, 9)]
# x[1]을 기준으로 오름차순 정렬
print(sorted(test, key = lambda x:x[1])) # [(6, 1), (2, 3), (4, 5), (1, 8), (7, 9)]
# 인자값인 test의 튜플 범위를 넘어가서 tuple index out of range 에러 발생
#print(sorted(test, key = lambda x:x[2]))

# 기본 내림차순 정렬
print(sorted(test, reverse = True)) # [(7, 9), (6, 1), (4, 5), (2, 3), (1, 8)]
# x를 기준으로 내림차순 정렬
print(sorted(test, key = lambda x:x, reverse = True)) # [(7, 9), (6, 1), (4, 5), (2, 3), (1, 8)]
# x[0]을 기준으로 내림차순 정렬
print(sorted(test, key = lambda x:x[0], reverse = True)) # [(7, 9), (6, 1), (4, 5), (2, 3), (1, 8)]
# x[1]을 기준으로 내림차순 정렬
print(sorted(test, key = lambda x:x[1], reverse = True)) # [(7, 9), (6, 1), (4, 5), (2, 3), (1, 8)]
# x[1]을 기준으로 내림차순 정렬 reverse = True 사용 대신 표현식에 -를 붙여 내림차순으로 정렬이 가능
print(sorted(test, key = lambda x:-x[1])) # [(7, 9), (1, 8), (4, 5), (2, 3), (6, 1)]



key가 여러개 일 때 정렬 우선순위를 정해줄 수 있습니다. 예를 들어 x[0]를 기준으로 정렬하다가 x[0]이 동일하다면 x[1]을 기준으로 정렬하는 식으로 우선순위를 정해줄 수 있습니다.

test = [ (1, 8), (2, 3), (7, 9), (6, 1), (4, 5), (1, 5) ]

# x[0]을 기준으로 오름차순 정렬하고 x[0]값이 같다면 x[1]을 기준으로 정렬
print(sorted(test, key = lambda x : (x[0], x[1])))
# [(1, 5), (1, 8), (2, 3), (4, 5), (6, 1), (7, 9)]

# x[0]을 기준으로 오름차순 정렬하고 x[0]값이 같다면 -x[1]을 기준(x[1]의 내림차순)으로 정렬
print(sorted(test, key = lambda x : (x[0], -x[1])))
# [(1, 8), (1, 5), (2, 3), (4, 5), (6, 1), (7, 9)]

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기