DA Study/TIL

[TIL] 리스트 컴프리헨션(List Comprehension) #python3 #FConline

harrym8n 2025. 1. 2. 18:38

python3 - FC online 개인 프로젝트
👉 프로젝트 Github 바로가기

result_list = []
for sentence in comment_list:
    okt_token = okt.pos(sentence)

    # 한국어, 숫자, 영어만 남기기
    result = []
    for token, pos in okt_token:  
        if re.match('^[a-zA-Z가-힣]+', token): 
            result.append((token,pos))

        # 결과 리스트에 저장
        result_list.append(result)

# 1차원 리스트로 변환(flatten)
tokens_list = [item for sublist in result_list for item in sublist] 
tokens_list

[ 논리 과정 ]

  1. 하나의 선수카드 리뷰 당 해당 리뷰를 구성하는 형태소와 품사를 Tuple형식으로 리스트에 저장
  2. 모든 리뷰 대상으로 위 작업을 실행하고 해당 리스트들을 최종 리스트에 저장
  3. 리스트 안의 리스트가 포함되므로 이후 스톱워드를 제거하는 작업에 불편함을 겪음(반복문으로 형태소를 1개씩 점검해야함)
  4. 최종 리스트를 1차원 리스트도 변환해줘야한다.

[ 문제 상황 ]

  • 최종 리스트가 1차원이 아닌 다차원이다. (리스트 안에 리스트가 존재한다.)
  • 따라서 스톱워드 제거 작업에 바로 활용할 수 없다.

[ 해결 ]

  • for문을 활용한 리스트 컴프리헨션으로 리스트 안의 리스트 요소를 꺼내서 새로운 리스트를 만든다.
  • for문을 두 번 작성한다.( 1. 리스트 안의 리스트 반환 2.리스트 안의 리스트에서 요소 반환)

[ 회고 ]

  • 컴프리헨션 문법은 자료구조를 유연하게 다룰 때 주로 사용한다.