리셋 되지 말자

람다 표현식 본문

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)

'Python' 카테고리의 다른 글

정렬  (0) 2021.06.13
python에서 re (regex) 사용 - 단어 추출  (0) 2021.06.13
list 뒤짚기 - reverse()  (0) 2021.06.13
[python 문법] dict  (0) 2021.06.08
[python 문법] list  (0) 2021.06.08
Comments