달나라 노트

Python Basic : sorted, sort (list의 요소 정렬하기) 본문

Python/Python Basic

Python Basic : sorted, sort (list의 요소 정렬하기)

CosmosProject 2021. 3. 29. 03:21
728x90
반응형

 

 

 

sorted, sort 모두 python의 list 속 요소들을 정렬할 수 있습니다.

 

list_test = [5, 3, 1, 4, 2]
list_test.sort(reverse=False)
print(list_test)

list_test = [5, 3, 1, 4, 2]
list_test.sort(reverse=True)
print(list_test)


-- Result
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]

먼저 sort method를 봅시다.

위처럼 어떤 list에 적용하여 sort가 적용된 list 자체를 정렬시켜버립니다.

(sort method는 적용된 list 자체에 변형을 가하고 아무 return값이 없습니다.)

 

또한 reverse라는 option을 명시하여 오름차순/내림차순 정렬을 설정할 수 있습니다. (기본값은 False입니다.)

reverse=False --> 오름차순 정렬

reverse=True --> 내림차순 정렬

 

 

근데 보통 sort보단 sorted method가 더 편합니다.

 

list_test = [5, 3, 1, 4, 2]
list_new = sorted(list_test, reverse=False)
print(list_test)
print(list_new)

list_test = [5, 3, 1, 4, 2]
list_new = sorted(list_test, reverse=True)
print(list_test)
print(list_new)



-- Result
[5, 3, 1, 4, 2]
[1, 2, 3, 4, 5]
[5, 3, 1, 4, 2]
[5, 4, 3, 2, 1]

이번엔 sorted method입니다.

 

sorted method는 인자로서 정렬을 적용할 list를 받습니다.

 

마찬가지로 아래처럼 오름차순/내림차순을 reverse key를 이용해 설정할 수 있습니다. (기본값은 False입니다.)

reverse=False --> 오름차순 정렬

reverse=True --> 내림차순 정렬

 

또한 sorted method는 원본 list는 건드리지 않고 정렬된 list를 return합니다.

list_test가 원본 그대로인걸 알 수 있죠.

 

 

 

 

 

 

list_test = ['a', 'd', 'D', 'c', 'A', 'B']
list_new = sorted(list_test, reverse=False)
print(list_new)

list_new = sorted(list_test, reverse=False, key=str.lower)
print(list_new)



-- Result
['A', 'B', 'D', 'a', 'c', 'd']
['a', 'A', 'B', 'c', 'd', 'D']

정렬을 할 때 오름차순으로 정렬한다고 가정하면 기본적으로 대문자가 소문자보다 더 앞쪽에 위치하게 됩니다.

 

그러나 sorted method에선 key라는 argument에 정렬 전 list 속 각각의 element에 적용할 함수를 명시할 수 있습니다.

위 예시에선 key=str.lower로서 각각의 요소를 모두 소문자로 만든 후 정렬을 하라는 뜻이 됩니다.

 

 

 

 

 

list_test = [
    ('a', 'z', 3),
    ('c', 'x', 2),
    ('b', 'y', 1),
]

list_new = sorted(list_test) # 1
print(list_new)

list_new = sorted(list_test, key=lambda x: x[0]) # 2
print(list_new)

list_new = sorted(list_test, key=lambda x: x[1]) # 3
print(list_new)

list_new = sorted(list_test, key=lambda x: x[2]) # 4
print(list_new)



-- Result
[('a', 'z', 3), ('b', 'y', 1), ('c', 'x', 2)]
[('a', 'z', 3), ('b', 'y', 1), ('c', 'x', 2)]
[('c', 'x', 2), ('b', 'y', 1), ('a', 'z', 3)]
[('b', 'y', 1), ('c', 'x', 2), ('a', 'z', 3)]

위 예시는 sorted method를 이용해 좀 더 복잡한 정렬을 한 내용입니다.

 

list_test는 list속 tuple을 담고있는 형식입니다.

 

 

1. 이러한 list에 sorted를 적용하면 기본적으로 list속 tuple들의 가장 첫 번째 요소를 기준으로 정렬합니다.

즉, a, b, c를 기준으로 오름차순 정렬됨을 볼 수 있죠.

 

2. key에다가 lambda식을 명기한 후 여기에 x[0]이라고 적어줬습니다.

여기서 x는 list_test의 각 요소를 의미합니다. ('a', 'z', 3) 이런것들이 하나의 요소가 되는거죠.

따라서 x[0]는 각 요소의 index=0 값 기준으로 정렬을 하라는 뜻입니다.

즉, list속 tuple의 첫 번째 요소값을 기준으로 정렬하라는 뜻이죠.

 

3. x[1]이라고 명시한 것은 list속 tuple의 index=1인 요소값을 기준으로 정렬하라는 뜻입니다.

 

3. x[2]라고 명시한 것은 list속 tuple의 index=2인 요소값을 기준으로 정렬하라는 뜻입니다.

 

 

 

 

 

 

 

728x90
반응형
Comments