리스트에서 리스트를 빼고싶은데요

조회수 898회

예를 들어서 a 라는 리스트에 [1,2,3,4,3,2] 가 있고 b라는 리스트에 [1,2,3]이 있을때 a리스트에서 b리스트의 요소를 빼면 원래는 [4]만 나올거잖아요 근데 [4,3,2]가 나오게 하는 방법이 있나요??

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 어떻게 하셨는데 a 리스트에서 b 리스트 요소를 뺏을때 4만 나오나요 김호원 2020.9.28 09:17

2 답변

  • 데이터들이 단일숫자라면 문자열로 만들고 replace 하면 쉽게 구할 수도 있습니다.

    a, b = [1, 2, 3, 4, 3, 2], [1, 2, 3]
    str_a = ''.join(map(str, a))
    str_b = ''.join(map(str, b))
    str_a.replace(str_b, '')
    '432'
    
  • 아마 이런 거겠죠.

    질문자님이 했어야 할 숙제를 제가 대신 한 것이 아니기를 바랍니다.

    def list_diff_by_whole_match(target, criteria, returnRaw = False) :
    
        # 단순 무식하게 인덱스 단위로 쭉 순회합니다.
        for i in range(0, len(target)) :
            matched = True
            for j in range(0, len(criteria)) :
                matched = matched and target[i + j] == criteria[j]
    
            # criteria에 주어진 모든 원소들이 순서대로 등장하는 것을 확인했으므로 그 원소들을 None으로 만듭니다.
            # (del 하지 않음에 주의)
            if matched :
                for j in range(0, len(criteria)) :
                    target[i + j] = None
    
        # 필요한 것만 뽑아서 반환하거나 검사한 결과 원본을 반환합니다.
        return target if returnRaw else list(filter(None, target))
    
    # 테스트
    v = [1,2,3,4,3,2,1,2,4,1,2,3,4]
    w = [1,2,3]
    print(list_diff_by_whole_match(v, w)) # [4, 3, 2, 1, 2, 4, 4]
    

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

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

(ಠ_ಠ)
(ಠ‿ಠ)