본문 바로가기
Make the Learning Curve/Python

[Python] Sort() , sorted() 정렬 함수

by 에이도 2020. 12. 20.

정렬

  • 간단한 오름차순 정렬
  • sorted() 함수를 호출하면 됩니다.
  • 새로운 정렬된 리스트를 반환합니다.

처음 A, B 리스트가 주어졌을때,

A.sort() 는 기존 리스트 자체를 정렬하는 함수입니다.
A = A.sort()를 출력시, None을 출력합니다.

따라서 기존 리스트를 유지하고 싶다면,
새로운 변수에 할당해야합니다.
B1 = sorted(B) 를 사용해야합니다.

 

A = [9,8,5,6,41]
B = [9,8,5,6,41]

A.sort()
print(A)

A1 = A.sort()
print(A1)

B1 = sorted(B)
print(B1)

[out]
[5, 6, 8, 9, 41]
None
[5, 6, 8, 9, 41]

 

오름차순과 내림차순

  • reverse = True 사용
A = [9,8,5,6,41]
B = [9,8,5,6,41]

# 오름차순
A.sort()
print(A)

# 내림차순
A.sort(reverse = True)
print(A)

# 오름차순
B1 = sorted(B)
print(B1)

# 내림차순
B1 = sorted(B,reverse = True)
print(B1)

[out]
[5, 6, 8, 9, 41]
[41, 9, 8, 6, 5]
[5, 6, 8, 9, 41]
[41, 9, 8, 6, 5]

 

key 함수

  • key함수는 객체의 인덱스 중 일부를 키로 사용하여 복잡한 객체를 정렬하는 것입니다
C = ['안녕하세요', '반가워요', '좋은 하루', '기쁜 하루']
C_alpha = ['Hi', 'Hello', 'Good Morning', 'Good evening']
C1 = sorted(C, key=str)
C2= sorted(C_alpha, key=str)

C11 = sorted(C, key=str,reverse = True)
C21= sorted(C_alpha, key=str, reverse = True)

print(C1)
print(C11)
print('*'*5)
print(C2)
print(C21)


[out]
['기쁜 하루', '반가워요', '안녕하세요', '좋은 하루']
['좋은 하루', '안녕하세요', '반가워요', '기쁜 하루']
*****
['Good Morning', 'Good evening', 'Hello', 'Hi']
['Hi', 'Hello', 'Good evening', 'Good Morning']

 

튜플 정렬

  • itemgetter 이용
from operator import itemgetter
studens = [
    ('Kim', 'C+', 23),
    ('Son', 'A', 24),
    ('Lee', 'B', 22)    ]
S1 = sorted(studens, key= itemgetter(0))
S2 =sorted(studens,key= itemgetter(1)) 
S3 =sorted(studens, key= itemgetter(2)) 

print('문자순: ',S1, '\n등급순: ',S2, '\n나이순: ',S3)

[out]
문자순:  [('Kim', 'C+', 23), ('Lee', 'B', 22), ('Son', 'A', 24)] 
등급순:  [('Son', 'A', 24), ('Lee', 'B', 22), ('Kim', 'C+', 23)] 
나이순:  [('Lee', 'B', 22), ('Kim', 'C+', 23), ('Son', 'A', 24)]

 

댓글