99클럽 코테 스터디 3일차 TIL - 파이썬 정렬과 람다식

Wonjun·2024년 7월 24일
0

알고리즘 & 문제풀이

목록 보기
47/50
post-thumbnail

문자열 내 마음대로 정렬하기

https://school.programmers.co.kr/learn/courses/30/lessons/12915?language=python3

  • 제출한 코드
def solution(strings, n):
    return sorted(strings, key=lambda x: (x[n], x))    # n번째 글자 기준으로 오름차순 정렬 후 전체 문자로 정렬

한 줄 코드 작성

주석대로 n번째 글자를 기준으로 오름차순 정렬한 후 전체 문자로 오름차순 정렬한다.
람다식을 이용하여 간략하게 작성할 수 있다.
첫 번째 인자 x[n]: strings 배열 원소의 n번째 인덱스 를 기준으로 우선 정렬한 후, 첫 번째 인자가 같다면 두 번째 인자 x: strings 배열 원소의 전체 문자 를 비교하여 오름차순 정렬한다.


회고

Sort()와 Sorted()

sort는 리스트 객체의 메서드이다. 즉 사용할 때, [리스트명].sort()와 같이 사용한다. 기본적으로 오름차순 정렬이다. 리스트 자체가 수정된다. 아무것도 반환하지 않는다. None을 반환한다.
sort는 제자리 정렬(정렬 시 메모리가 추가로 필요하지 않음)이고, 안정정렬이다. 이는 sorted도 마찬가지다.

sorted()는 파이썬의 내장 함수로 원래 리스트를 변경하지 않고, 정렬된 새로운 리스트를 반환한다. 즉, 원본 리스트는 그대로 유지된다.
sorted()는 리스트뿐만 아니라, 튜플, 문자열 등 다양한 시퀀스 타입에 사용할 수 있다. (good)
sort(reverse=True), sorted(reverse=True) 와 같이 reverse 인자에 True를 주면 내림차순으로 정렬한다.

파이썬 lambda

lambda arguments: expression # 기본 문법

# 리스트의 각 요소에 2를 곱하는 람다식 사용
numbers = [1, 2, 3, 4]
doubled = map(lambda x: x * 2, numbers)
print(list(doubled))  # 출력: [2, 4, 6, 8]

# 리스트에서 짝수만 필터링하는 람다식 사용
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers))  # 출력: [2, 4]

# 튜플 리스트를 두 번째 요소 기준으로 정렬
pairs = [(1, 2), (3, 1), (5, 0)]
sorted_pairs = sorted(pairs, key=lambda x: x[1])
print(sorted_pairs)  # 출력: [(5, 0), (3, 1), (1, 2)]

장단점이 있다.
장점은 간결하고 가독성이 좋다.
단점은 람다식은 단일 표현식만 포함할 수 있기 때문에 복잡한 로직을 구현하는 데는 적합하지 않다.
또한 익명 함수기 때문에 디버깅 시 함수 이름이 없어 어려움을 겪을 수 있다.

profile
알고리즘

0개의 댓글