728x90


1. sort (메소드)

list_obj.sort( key = function, reverse = True )
- 리스트에 있는 메소드
- 오름차순 정렬이 기본 세팅이고 내림차순을 원한다면 reverse = True 를 매개변수로 전달
- 사용자가 원하는 정렬방법이 있을 때는 함수를 만들어 매개변수로 전달하거나 람다식을 사용한다.

# 함수, 람다식 사용 비교

# 람다식
ns = [('A군', 88), ('B군', 92), ('C군', 77)]
ns.sort(key=lambda t: t[1])  # [('C군', 77), ('A군', 88), ('B군', 92)]

# 함수
def sort_ns(t):
    return t[1]


ns.sort(key=sort_ns, reverse=True)  # [('B군', 92), ('A군', 88), ('C군', 77)]

 


2.  sorted (함수)

cpy_list_obj = sorted( list_obj, key = function, reverse = True )
- sort 메소드는 원본을 수정하기 때문에 원본은 유지하면서 정렬된 사본을 얻고 싶을 때 sorted 함수 사용
- iterable 객체면 매개변수로 전달받을 수 있다.
- sorted 에 매개변수로 전달된 객체는 정렬처리 후 리스트에 담겨 반환된다.

# 람다식
ns = [('A군', 88), ('B군', 92), ('C군', 77)]
cpy_ns = sorted(ns, key=lambda t: t[1])  # [('C군', 77), ('A군', 88), ('B군', 92)]


# 함수
def sort_ns(t):
    return t[1]


cpy_ns = sorted(ns, key=sort_ns, reverse=True)  # [('B군', 92), ('A군', 88), ('C군', 77)]

 


3. enumerate (함수)

new_obj = enumerate( org_obj, start_number )
- iterable 객체(org_obj)의 인자들에 넘버링을 쉽게 해주는 함수
- iterable 객체를 인자로 전달 받고 iterator 객체(new_obj)를 생성한다.
- start_number 자리에 숫자가 없다면 iterble 객체의 값들을 0부터 번호를 부여하고, 튜플로 감싸서 하나씩 반환

# 무작위로 정렬된 학생 리스트를 오림차순으로 정렬한 후 이름 순으로 번호를 부여

student_list = ['D군', 'A군', 'B양', 'C군']
student_list.sort()  # ['A군', 'B양', 'C군', 'D군']

numbering_student_list = {k: v for k, v in enumerate(student_list, 1)}
# {1: 'A군', 2: 'B양', 3: 'C군', 4: 'D군'}

 


 

728x90

+ Recent posts