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