티스토리 뷰

리스트를 소트하는 여러가지 방법

1
2
3
4
5
6
7
8
9
10
11
import random
def makeRandoms(size, limit):
    result = []
    for i in range(size):
            result.append(random.randrange(0,limit))
 
    return result
 
random.seed(1)
result = makeRandoms(20,100)
print(result)
cs

우선 20개의 랜덤한 변수(0~99)를 리스트에 삽입하고 결과를 확인했다.
seed에 1을 넣은것은 시드를 고정시켜서 결과를 확인하기 이전에 랜덤값이 바뀌지 않게 하기 위해서이다.

첫번째 방법은 리스트 클래스 내부에 있는 sort함수 사용하기.
1
2
result.sort()
print(result)

참 쉽다. sort함수가 어떤 알고리즘으로 동작하는지 알 필요가 없다 자동으로 정렬시켜 주기 때문에.


두번째 방법은 리스트 클래스 내부에 있는 sort함수를 사용하여 내림차순으로 정렬
1
2
result.sort(reverse=True)
print(result)
cs
마찬가지로 리스트 클래스 내부에 있는 sort 함수를 사용했다. 1번에서의 방법과 다른점은 키워드 파라미터를 이용하여 reverse 값을 True로 주었다는 것이다. 이 Reverse 라는 매개변수는 디폴트값으로 False를 가지고 있어서 별도로 입력하지 않았을때 오름차순으로 동작하게 된다.

세번째 방법. 외부 함수인 sorted함수 사용하기
1
2
other = sorted(result)
print(other)
cs
sorted 함수는 파이썬 내부에서 지원하는 기본 함수이다. 지금 예제에서 사용하는 리스트 클래스는 내부에 sort라는 함수를 제공하지만 다음에 알아볼 tuple이나 dictionary는 sort라는 함수를 제공하지 않기때문에 해당 클래스를 정렬 시킬때는 이 sorted 클래스를 사용하여야 한다. 리턴값으로 정렬된 내용을 반환하니 저장하여 출력하는 예제가 되겠다.

네번째 방법. 마찬가지로 외부함수인 sorted함수를 사용하여 내림차순으로 정렬하기이다.

other = sorted(result,reverse=True)
print(other)
매개변수로는 위와같이 정렬할 내용(예제에서는 리스트)와 함께 reversed=True를 키워드 파라미터로 전달하고 반환값으로 정렬된 내용을 받는다.

다섯번째 방법은 키값을 만들어서 사용자 정의 정렬하기 이다.
1
2
3
4
5
def lastDigit(n):
    return n%10
 
other = sorted(result, reverse=True, key = lastDigit)
print(other)
cs
위의 코드는 2자리 숫자를 가진 리스트에서 십의자리와는 무관하게 일의자리의 크기를 기준으로 정렬을 한다.

1
2
3
4
5
def digitSum(n):
    return n/10 + n %10
 
other = sorted(result,reverse=True,key=digitSum)
print(other)
cs
같은 방법을 이용하여 1의 자리와 10의자리의 합으로 정렬을 하였다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함