Python
람다 표현식
kyeongjun-dev
2021. 6. 13. 16:42
람다 표현식 이란
식별자 없이 실행 가능한 함수를 말한다.
함수 선언 없이도 하나의 식으로 함수를 단순하게 표현할 수 있다.
람다 사용
- sorted (자동으로 정렬)
l = ['2 A', '1 B', '4 C', '1 A']
print(sorted(l))
['1 A', '1 B', '2 A', '4 C']
- 뒷 문자로 정렬. 뒤 문자가 같을 경우, 앞 번호순으로 정렬 : 람다 사용
l = ['2 A', '1 B', '4 C', '1 A']
l.sort(key= lambda x: (x.split()[1], x.split()[0]))
print(l)
['1 A', '2 A', '1 B', '4 C']
- 뒷 문자로 정렬. 뒤 문자가 같을 경우, 앞 번호순으로 정렬 : 람다 미사용
def func(x):
return x.split()[1], x.split()[0]
l = ['2 A', '1 B', '4 C', '1 A']
l.sort(key=func)
print(l)
['1 A', '2 A', '1 B', '4 C']
응용
>>> s = ['az', 'by', 'cy', 'cx']
>>> s.sort(key=lambda x: x[::-1])
>>> s
['cx', 'by', 'cy', 'az']
l = ['2 A', '1 B', '4 C', '1 A']
l.sort(key= lambda x: (x.split()[1], -int(x.split()[0])))
print(l)
['2 A', '1 A', '1 B', '4 C']
l = ['2 A', '1 B', '4 C', '1 A']
l.sort(key= lambda x: (x.split()[0], -ord(x.split()[1])))
print(l)
['1 B', '1 A', '2 A', '4 C']
참고 : https://www.acmicpc.net/board/view/51544
1) 문자열의 첫 글자를 기준으로 내림차순 정렬!
2) 만일 문자열의 첫 글자가 같을 경우 문자열 길이를 기준으로 오름차순 정렬!
nums = ['3', '30', '34', '5', '9']
nums.sort(key=lambda x: (x[0], -len(x)), reverse=True)