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


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

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

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

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

  • 2017년 12월 15일에 작성됨

조회수 110


Banner bitmango

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
  • 2017년 12월 15일에 작성됨


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]
  • 2017년 12월 16일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close