Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 map 함수와 람다(Lambda) 표현식으로 문자 치환하는 방법

문자열 처리를 하다 보면 두 문자를 서로 맞바꾸어야 하는 경우가 종종 있습니다. 예를 들어 문자 a1a2로, 반대로 a2a1으로 교체하고 싶은 상황이 그렇습니다.

문제 상황

다음과 같은 입력 문자열이 있다고 가정해 보겠습니다.

"puporials toinp"

여기서 문자 pt를 서로 맞바꾸면 최종적으로 다음과 같은 결과를 얻고자 합니다.

"tutorials point"

map 함수와 람다 표현식 활용

이러한 치환 작업은 map() 함수와 람다(lambda) 표현식을 조합하면 간단하게 해결할 수 있습니다. map(lambda, input) 함수는 전달받은 이터러블(iterable)의 각 요소를 하나씩 순회하면서, 각 요소에 람다 표현식을 적용합니다. 즉, 문자열의 모든 문자에 대해 조건에 맞는 변환 규칙을 일괄 적용할 수 있는 것입니다.

람다 표현식의 동작 방식은 다음과 같습니다.

  • 입력 문자가 a1, a2 어느 쪽도 아니라면 원래 문자를 그대로 반환합니다.
  • 입력 문자가 a2라면 a1으로 바꿉니다.
  • 그 외의 경우(즉, a1인 경우)에는 a2로 바꿉니다.

예제 코드

def replaceUsingMapAndLambda(sent, a1, a2):
    # a1 또는 a2가 입력될 때만 두 문자를 서로 교체하는 람다를 생성합니다.
    newSent = map(lambda x: x if(x != a1 and x != a2) else a1 if x == a2 else a2, sent)
    return ''.join(newSent)

print(replaceUsingMapAndLambda("puporials toinp", "p", "t"))

실행 결과

위 코드를 실행하면 다음과 같은 출력을 확인할 수 있습니다.

tutorials point

정리

map() 함수와 람다 표현식을 함께 사용하면 별도의 반복문 없이도 문자열 내 특정 문자들을 깔끔하게 맞바꿀 수 있습니다. 코드가 한 줄의 조건부 표현식으로 압축되어 간결하지만, 조건이 복잡해질 경우에는 일반적인 for 루프나 str.translate() 같은 대안을 고려하는 것이 가독성 측면에서 더 좋을 수 있습니다.