[Python] sort key lambda 활용하기

Peter·2021년 3월 16일
0

Python

목록 보기
1/2

숫자를 큰 순서대로 이어붙이고 싶을 때

number_list = [1, 21, 31, 9, 99]
number_list.sort()

number_list
[1, 9, 21, 31, 99]

단순히 숫자 형태로 sort 하면 숫자가 큰 순서로 되기 때문에
이어 붙였을 때 큰 숫자로 만들 수 없다

list_string = ["1", "21", "31", "91", "9", "99"]
list_string.sort()

list_string
["1", "21", "31", "9", "91", "99"]

스트링으로 변환을 하면 제일 높은 자리를 기준으로 크게 모을 수 있지만
"9", "91", "99"의 순서로는 제일 큰 수를 만들 수 없다
여기서 엘리먼트들중 최고로 긴 자리수(2자리)를 기준으로 늘려주면
"99", "9191", "9999" 로 출력되는데

list = ["99", "9191", "9999"]
list.sort()

list
["9191", "99", "9999"]

이 과정을 거치면 최대 수를 만들기 위해서 정렬이 가능한데
늘린 숫자 스트링을 다시 줄이기는 쉽지가 않다.

여기서 sort 메소드 안에 있는 key에 lambda를 활용해주면 간단하게 해결 가능하다.

list = ["9", "91", "99"]
list.sort(key=lambda x: x*3)

list
["91", "9", "99"]

이렇게 원하는대로 출력이 가능하다
lambda x:x 를 통해 안에 있는 엘리먼트를
내가 지정한 상태를 기준으로 정렬시키는건데
원본을 변형시키지 않고 정렬이 가능하다

 number_list = [1, 21, 31, 9, 99]
 number_list.sort(key=lambda x:str(x)*3, reverse=True)
 
 number_list
[99, 9, 31, 21, 1]

이렇게 출력이 가능하다

profile
컴퓨터가 좋아

0개의 댓글