리스트에서 리스트를 빼고싶은데요
조회수 898회
예를 들어서 a 라는 리스트에 [1,2,3,4,3,2] 가 있고 b라는 리스트에 [1,2,3]이 있을때 a리스트에서 b리스트의 요소를 빼면 원래는 [4]만 나올거잖아요 근데 [4,3,2]가 나오게 하는 방법이 있나요??
-
(•́ ✖ •̀)
알 수 없는 사용자
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]
댓글 입력