본문 바로가기
PS(Problem Solving)/ETC

[Python] sort( ), sorted( ), lambda

by 초코칩프라푸치노 2021. 2. 27.

⊙list.sort()

1. 따로 반환하는 값이 없으므로(None) 새로운 변수 선언이 필요 없다.

2. '리스트명.sort()'와 같은 방법으로 작성한다.

3. key parameter가 None으로 설정되어 있으므로, 문자열 리스트를 문자 길이 순으로 정렬하고 싶다면 list.sort(key=len)으로 작성한다.

 

a = [3, 2, 5, 1, 4]
a.sort()
print(a)    #[1, 2, 3, 4, 5]

 

 

⊙sorted(list)

1. 기존에 선언된 리스트 원본을 변화시키지 않는다.

2. 순서대로 정렬한 리스트를 반환하므로 새로운 변수를 선언해야 한다.

3. 'newList = sorted(list)'와 같은 방법으로 작성한다.

 

a = [3, 2, 5, 1, 4]
b = sorted(a)
print(b)    #[1, 2, 3, 4, 5]

 

 

⊙lambda의 활용

lambda를 이용하면 리스트나 딕셔너리 등을 쉽게 정렬할 수 있다.

 

① 딕셔너리 정렬

 

1. 딕셔너리의 items() 메서드를 이용하여 key들을 사전 순으로 정렬할 수 있다.

a = {'A': 3, 'E': 9, 'C': 5, 'B': 1}
print(sorted(a.items()))    #[('A', 3), ('B', 1), ('C', 5), ('E', 9)]

2. value를 기준으로 정렬하고 싶다면 lambda를 사용하여 정렬할 수 있다.

a = {'A': 3, 'E': 9, 'C': 5, 'B': 1}
print(sorted(a.items(), key=lambda x: x[1]))    #[('B', 1), ('A', 3), ('C', 5), ('E', 9)]

 

② 리스트 정렬

 

1. 리스트 안의 원소들에 대해 우리가 원하는 기준에 맞게 정렬할 수 있다.

a = [(1, 2, 3), (6, 4, 5), (6, 3, 5)]
a.sort(key=lambda x: (-int(x[1]), int(x[2]), -int(x[3]), x[0]))
  • 두 번째 원소 기준으로 내림차순 정렬
  • 두 번째 원소가 같은 경우, 세 번째 원소를 기준으로 오름차순 정렬
  • 세 번째 원소가 같은 경우, 네 번째 원소를 기준으로 내림차순 정렬
  • 네 번째 원소가 같은 경우, 첫 번째 원소를 기준으로 오름차순 정렬

 

 

Counter을 이용한 딕셔너리나 리스트 안의 튜플/리스트를 정렬할 때 요긴하게 쓸 수 있을 것 같다. 필요할 때 꺼내 쓸 수 있게 잘 훈련시켜야겠다.

 

 

 

반응형

댓글