본문 바로가기
C++ 200제/코딩 IT 정보

파이썬 정렬 소스, 숫자 문자열 예제 6개 sorted join

by vicddory 2019. 5. 26.

파이썬 활용하여 숫자, 문자열 정렬하는 예제 6개 살펴보겠습니다. 일반적인 예제는 아니고 조금 특이한 형태의 정렬이라는 점 먼저 밝힙니다.


숫자 정렬 시엔 아래 랜덤 함수를 사용합니다.


1
2
3
4
5
6
7
8
import random
 
def makeRandoms(size):
    result = []
    for i in range(size):
        result.append(random.randrange(100))
 
    return result
cs


1. 숫자 정렬, 첫째 자리 작은 순서


1
2
3
4
5
6
7
value1 = makeRandoms(10)
 
def lastDigit(n):
    return n % 10
 
print(sorted(value1, key=lastDigit))
print(sorted(value1, key=lastDigit, reverse=True))
cs


■ 결과



결과 : 1, 3, 4, 5, 7, 8, 9


랜덤 함수에서 얻은 결과는 value1 변수에 저장됩니다.

6번 7번 라인에서 정렬할 때 옵션으로 lastDigit 함수 반환값을 사용합니다.


4번 라인 return n % 10은 인자 n을 10을 나눴을 때 나머지를 의미합니다. 즉, 첫째 자리수를 반환하는 것으로 이 순서대로 결과가 정렬됩니다.


7번 라인은 6번 라인 결과의 반대로 정렬된 것입니다.


2. 숫자 정렬, 자릿수 숫자를 더해 큰 순서대로


1
2
3
4
5
6
7
value1 = makeRandoms(10)
 
def digitSum(n):
    return n / 10 + n % 10
 
print(sorted(value1, key=digitSum))
print(sorted(value1, key=digitSum, reverse=True))
cs


■ 결과



결과 : 3, 6, 7, 8, 11, 12, 13, 14, 18


함수 digitSum은 n / 10으로 몫을 구하고, n % 10으로 나머지를 구합니다. 두자리수 정수를 첫째 둘째 자리로 분리해 더한 값을 반환합니다.


정수 21은 합이 3으로 가장 작고, 숫자 99는 합이 18로 가장 큽니다.

3. 문자열 정렬


1
2
3
4
5
6
7
= ['RED''Black''ORANGE''blue''GREEN']
 
def stringLength(s):
    return len(s)
 
print(sorted(d, key=stringLength))
print(sorted(d))
cs


■ 결과



결과 : 3, 4, 5, 6


함수 stringLength는 문자열 길이를 반환합니다. 이 값을 6번 라인처럼 정렬 옵션으로 사용합니다.

RED는 길이 3으로 맨 앞에 오고, ORANGE는 길이 6으로 끝에 위치합니다.


4. 문자열 정렬, 알파벳 순서대로


1
2
3
4
5
6
= ['RED''Black''ORANGE''blue''GREEN']
 
def lowerAsc(s):
    return s.lower()
 
print(sorted(d, key=lowerAsc))
cs


■ 결과



결과 : b, g, o, r


4번 라인 lower 함수는 문자열을 소문자로 변환하여 반환합니다.

6번 라인 정렬 옵션에서 소문자로 변환된 결과를 이용합니다. 알파벳 순서대로 오름차순(ASC) 정렬됩니다.


b는 알파벳 2번째, r은 알파벳 18번째입니다.

5. Join 리스트를 문자열로 정렬 후 변환


1
2
3
4
= 'hello mds academy'
 
print(sorted(e))
print(''.join(sorted(e)))
cs


■ 결과



join 함수는 split 한 쌍으로 외우세요. 리스트를 문자열, 문자열을 리스트로 변환합니다.


리스트 형태의 문자들을 4번 라인에서 하나의 문자열로 만들어 출력합니다.


6. 리스트 사이에 문자 추가 정렬


1
print('-'.join(['a''e''c']))
cs


■ 결과



리스트에 저장된 문자 a, e, c 사이에 -를 추가합니다. 



관련 글


파이썬 pdb 사용, 디버깅 방법과 실행 종료 (리눅스 공통


파이썬 2 3 차이 4가지 (python print, int, float, string unicode)


파이썬 딕셔너리 예제 4가지, for반복문 중심



댓글