Python3 에서 중복된 문자 제거 (연속된 경우만 제거)

조회수 8517회

ex) [3,5,7,7,3,3,7,3,5] 리스트의 경우

set을 이용하면 {3,5,7}로 결과가 return 되지만

제가 원하는 return값은 [3,5,7,3,7,3,5] 와 같이 똑같은 문자나 숫자가 다음에 오는 경우만 제거하고 싶은 case입니다.

혹시 간단한 함수가 있는지 질문드립니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • 제가 아는 라이브러리가 없어서 함수로 짜봤습니다..

    def list_overlap_del(input_list):
        result_list = []
    
        for i in range(len(input_list)):
            if i == 0:
                list_temp.append(input_list[i])                        
            elif list_temp[-1] != input_list[i]:
                list_temp.append(input_list[i])           
        return result_list
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
  • groupby 을 사용해서 간단하게 표현은 가능합니다만 효율적인 방법은 아닐것으로 보이네요.

    >>> import itertools
    >>> L = [3,5,7,7,3,3,7,3,5]
    >>> G = itertools.groupby(L)
    >>> [k for k, v in G]
    [3, 5, 7, 3, 7, 3, 5]
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)