lambda - python

박상진·2021년 12월 6일

개인 공부

목록 보기
3/4

프로그래머스 문제 중 '문자열 내 마음대로 정렬하기'라는 문제를 만났습니다.

문제는 다음과 같습니다.

문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.

위와 같은 문제를 lambda를 사용하면 아래와 같이 매우 쉽게 풀 수 있습니다.

def solution(strings, n):
    answer = sorted(strings, key =  lambda x : (x[n], x))
    return answer

lambda식은

lambda 인자 : 표현식

이렇게 사용됩니다.
간단하게 말해서 인자에 들어간 값을 표현식으로 연산하는 것입니다.

위에 함수를 보면 sorted가 사용된 것을 볼 수 있습니다.
sorted에 정렬할 리스트를 넣어주고 key = lambda x : x[n] 을 넣어주면,
각 요소 값의 [n]번째 인덱스를 기준으로 정렬된 리스트를 얻게 됩니다.
맨 뒤에 x를 넣어준 이유는 인덱스가 동일 값일 경우에 이후 사전순으로 다시 정리하기 위함입니다.

사실 lambda를 쓰지 않고 구현한 코드를 보여주고 싶었으나.. 아직 못해서 완성되면 올리겠슴당~

profile
개발자가 되고싶당

0개의 댓글