본문 바로가기
프로그래밍/Python

[파이썬/Python] 리스트의 원소를 이용하여 리스트 정렬하기 (1 or 다차원 배열)

by _BlankSpace 2018. 6. 3.

파이썬의 리스트를 사용하면서, 정렬해야 하는 경우가 있을 것이다.

이번 포스팅은 리스트의 한 원소를 이용하여 정렬하는 방법을 정리하려고 한다.


1. 기본적인 리스트 정렬 방법


먼저, 리스트를 정렬하는 방법은 다음과 같다.

리스트의 기본 함수로 sort()를 제공한다. 다음은 sort() 함수를 이용한 정렬 예이다.


1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env python
 
num = [14523]
alpha = ['a''d''e''b''c']
 
num.sort()
alpha.sort()
 
print num 
print alpha
cs


결과 :

1
2
[12345]
['a''b''c''d''e']
cs

이처럼 쉽게 정렬할 수 있고, 숫자 뿐만이 아니라 문자도 가능하다.


2. 리스트 역정렬 방법


파이썬에서는 역정렬을 바로 제공하지는 않는 것 같다.

물론, 사용자가 역정렬 되는 함수를 만들면 괜찮겠지만, 기본 제공하는 함수를 이용하여 리스트를 역정렬할 수도 있다.


reverse()함수를 이용하면, 리스트의 요소를 반대로 정렬시킨다.


따라서, 리스트를 역정렬하려면 다음과 같이 하면 될 것이다.

1
2
3
4
5
6
7
#!/usr/bin/env python
 
num = [14523]
 
num.sort()
num.reverse()
print num 
cs


결과 :

1
[54321]
cs



또 다른 방법으로는 sort에 reverse 인자를 넣는 방법이다.

1
2
num.sort(reverse=True)
alpha.sort(reverse=True)
cs


결과 :

1
2
[54321]
['e''d''c''b''a']
cs


위의 두 가지 방법처럼, 파이썬에서는 간단하게 역정렬이 가능하다.


3. 더 들어가..) 다차원 정렬 방법


위의 방법은 1차원 리스트일 때 가능한 방법이라고 할 수 있겠다.

그럼 다차원 배열의 리스트일 경우에는 어떻게 정렬할까.


분명, 위와 같은 방법으로는 가능하지 않을 것이다.

이떄는 key 매개 변수와 lambda 식을 함께 사용하여, list의 sort함수를 이용하면 된다. 다음을 보자.

1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python
 
list = [ 
    ['One'1], 
    ['Zero'0], 
    ['Three'3], 
    ['Two'2], 
]
 
list.sort(key=lambda x:x[1])
print list
cs


10번 라인을 보면, 2번째 원소로 정렬을 하는 lambda식을 확인할 수 있다.

결과는 다음과 같다.

1
[['Zero'0], ['One'1], ['Two'2], ['Three'3]]
cs


위의 리스트를 정렬하는 방법 정도면, 실제로 프로그래밍할 때의 정렬에 응용할 수 있지 않을까 생각한다.


서로 이웃 추가는 항상 환영입니다. :)

댓글