list(), map()

샤워실의 바보·2025년 2월 5일
0

Python

목록 보기
9/10

이 코드는 langchain.schema에서 제공하는 BaseOutputParser를 상속하여 문자열을 콤마(,) 기준으로 분리하는 CommaOutputParser 클래스를 정의합니다.

from langchain.schema import BaseOutputParser


class CommaOutputParser(BaseOutputParser):
    """BaseOutputParser를 상속하여 문자열을 ',' 기준으로 파싱하는 클래스"""

    def parse(self, text: str) -> list[str]:
        """문자열을 ',' 기준으로 분리하고 각 요소의 공백을 제거"""
        items = text.strip().split(",")  # ',' 기준으로 분리
        return list(map(str.strip, items))  # 각 요소의 공백 제거


# 객체 생성
parser = CommaOutputParser()

# 테스트 실행
result = parser.parse("Hello,how,are,you,doing")

# 출력 결과 확인
print(result)

📌 list(map(str.strip, items)) 의 동작 원리

이 부분은 문자열 리스트(items)의 각 요소에서 공백을 제거하는 역할을 합니다.

🔍 1️⃣ map(str.strip, items) 동작

map() 함수는 리스트의 각 요소에 str.strip() 함수를 적용합니다.

✅ str.strip() 이란?

• 문자열의 양쪽 공백을 제거하는 내장 함수.
• "  hello  ".strip() → "hello" (앞뒤 공백 제거)

✅ map(str.strip, items) 실행 과정

items = ["Hello ", " how", " are ", " you", "doing "]
processed_items = map(str.strip, items)

이제 map()은 리스트 items의 각 요소에 str.strip()을 적용:

"Hello "  →  "Hello"
" how"    →  "how"
" are "   →  "are"
" you"    →  "you"
"doing "  →  "doing"

📌 map()은 결과를 이터레이터(iterator) 로 반환.

🔍 2️⃣ list()로 변환

return list(map(str.strip, items))

• map()의 결과는 이터레이터이므로, list()를 사용하여 리스트로 변환.

• 최종적으로 모든 요소에서 공백이 제거된 리스트를 반환.

✅ 최종 코드 실행 예제

items = ["Hello ", " how", " are ", " you", "doing "]

# map() 적용 후 리스트로 변환
clean_items = list(map(str.strip, items))

print(clean_items)  # ['Hello', 'how', 'are', 'you', 'doing']

📌 결과: ['Hello', 'how', 'are', 'you', 'doing']

🚀 모든 문자열의 앞뒤 공백이 제거됨.

🎯 결론

return list(map(str.strip, items))

이 한 줄은 다음과 같은 역할을 합니다:

  1. 각 요소의 앞뒤 공백을 제거 (str.strip())

  2. map()을 사용하여 리스트의 모든 요소에 적용

  3. list()로 변환하여 최종 리스트 반환

✅ 출력 결과

['Hello', 'how', 'are', 'you', 'doing']

📌 str.strip()을 적용했기 때문에 각 요소의 앞뒤 공백이 자동으로 제거됨. 🚀

profile
공부하는 개발자

0개의 댓글