언어/Python

[Python]람다(lambda)를 사용하여 정렬하기

GAEBAL 2023. 4. 19. 21:03
728x90

람다(lambda)란?

람다란, 프로그래밍 언어에서 사용되는 개념으로 익명의 함수, 이름 없는 함수를 지칭한다 ! 

 

람다는 이번 글에서 다룰 "정렬"말고도 다른 많은 방법으로 활용할 수 있다고 한다.

다른 많은 사용법은 다음번에 정리해보겠다 !

 

 

람다(lambda)를 활용한 정렬

예제

예제 1

dataArr = ['aewde', 'ab', 'lpcd', 'a', 'sbc']

# 1번
dataArr.sort()

# 2번
dataArr.sort(key = lambda x : len(x))

1번의 경우에는 ['a', 'ab', 'aewde', 'lpcd', 'sbc']로 정렬이 됨.

2번의 경우에는 ['a', 'ab', 'sbc', 'lpcd', 'aewde']로 정렬이 됨 !

💡 눈치빠른 사람은 len(x)을 기준으로 정렬하는 것을 확인할 수 있을거임!

 

예제 2

dataArr = ['be', 'water', 'my', 'friend', 'life', 'is', 'a', 'journey', 'no', 'pain', 'no', 'gain']

for index in range(len(dataArr)):
    data_len = len(dataArr[index])
    dataArr[index] = (dataArr[index], data_len)

# 1번
dataArr.sort(key = lambda x: (x[1], x[0]))

# 2번
dataArr.sort(key = lambda x: (x[0], x[1]))

1번의 경우에는 [('a', 1), ('be', 2), ('is', 2), ('my', 2), ('no', 2), ('no', 2), ('gain', 4), ('life', 4), ('pain', 4), ('water', 5), ('friend', 6), ('journey', 7)]

2번의 경우에는 [('a', 1), ('be', 2), ('friend', 6), ('gain', 4), ('is', 2), ('journey', 7), ('life', 4), ('my', 2), ('no', 2), ('no', 2), ('pain', 4), ('water', 5)]

이렇게 정렬이 된다.

 

💡 lambda x에 있는 값이 정렬 기준의 우선 순위 순으로 괄호"()"안에 들어있음 !
1번은 x[1](원소의 길이)을 기준으로 먼저 정렬을 하고, 그 후에 x[0](원소의 알파벳 순서)을 기준으로 정렬을 한다.
2번은 그 반대임

 

디폴트가 오름차순이고, 내림차순을 원한다면 "-"를 붙여주면 된다!

예시

dataArr.sort(key = lambda x: (-x[0], x[1]))

 

sorted()에서도 사용 가능하다!

예시

tempArr = sorted(dataArr, key = lambda x : (x[0], x[1]))

 

 

정리

항상 느끼는거지만 파이썬은 '뭐야 이런 것도 있어?' 하는 기능들이 있고, 사용법도 엄청 간단한 것 같다 !

알아두면 코테볼 때 요긴하게 쓰일 듯 ?

728x90