이 포스팅에서는 python의 sort함수에 사용되고 있는 'lambda'에 대해 소개한다.
1. 사전형이나 리스트 형을 sort할 때 아래와 같은 형식을 자주 마주친다.
사전형이나 리스트 형을 sort하는 경우가 많을 것으로 생각되는데, 그 때
sorted(d.items(), key=lambda x: x[1])
위와 같은 코드를 본 적이 있지 않은가? 나는 자주 보았다.
위의 예에서는 사전의 value를 원래대로 정렬하고 있다.
스스로도 정렬하고 싶을 때 자주 사용하지만, 의미를 잘 모른채 사용해왔다.
이대로는 위험하다고 생각하여 조사해보았다.
2. 그나저나 lambda란 무엇인가?
lambda는 무명함수라고 불리며 그 이름대로 이름 없는 함수를 작성할 때 사용한다.
예를 들어 아래의 예에서는 lambda식을 사용해서 '인수를 2제곱하여 반환하는 무명 함수'를 변수 a에 대입하고 있다.
a = lambda x : x*x
print(a(4)) #16
여기서는 '이름이 없는 함수를 만드는 것' 정도로 이미지를 떠올리면 충분하다고 생각한다.
3. sort함수로 되돌아 와서
lambda가 사용된 sort함수를 살펴보자.
dictionary = [['なら',3], ['かながわ',4], ['とうきょう',1], ['おおさか',2]]
print(dictionary) # [['なら', 3], ['かながわ', 4], ['とうきょう', 1], ['おおさか', 2]]
sortedDict = sorted(dictionary, key=lambda x: x[1])
print(sortedDict) # [['とうきょう', 1], ['おおさか', 2], ['なら', 3], ['かながわ', 4]]
위의 예에서 리스트의 2번째의 요소를 원래 순서대로 정렬하고 있다.
그것은 sort함수의 key에 '요소 x를 받고, x[1]를 돌려준다'라는 lambda식을 지정하고 있기 때문이다.
이것에 의해, sort함수는 리스트의 2번째의 요소를 key로 하여 정렬한다.
이번에는 리스트의 첫 번째 요소를 key로 하여 정렬하는 것을 생각해보자.
첫 번째를 key를 하고 싶은 경우, lambda식에 리스트의 첫 번째를 반환하는 함수를 정의하면 될 것이므로, 아래와 같이 코드를 작성할 수 있다.
dictionary = [['なら',3], ['かながわ',4], ['とうきょう',1], ['おおさか',2]]
print(dictionary) # [['なら', 3], ['かながわ', 4], ['とうきょう', 1], ['おおさか', 2]]
sortedDict = sorted(dictionary, key=lambda x: x[0])# <- x[0]に変更
print(sortedDict) # [['おおさか', 2], ['かながわ', 4], ['とうきょう', 1], ['なら', 3]]
4. 마무리 : sort함수에 있어서 lambda식이란
lambda식 자체는 굉장히 깊은 내용을 가진 개념이지만, sort함수내에서는 거의 공식과 같이 사용될 뿐이다.
그러므로 아래와 같이 암기해두면 될 것이다.
sorted ([list 혹은 dic], key = lambda x: [key로 지정하고 싶은 요소])
참고자료
'IT > 언어' 카테고리의 다른 글
[python] python의 함수 인수(인자) 정리 (0) | 2020.08.19 |
---|---|
[python] python의 변수 사용 범위 정리 (1) (0) | 2020.08.18 |
[python/numpy] Numpy의 데이터형 dtype과 astype를 사용한 변경(캐스트) (0) | 2020.06.05 |
[python] 머신러닝을 위한 Python(8) ; Data Cleansing (0) | 2020.06.05 |
[python] 머신러닝을 위한 Python(7) ; Data Handling - Pandas # 2 (0) | 2020.06.05 |