두 개의 파이썬 리스트를 비교하여 중복된 요소를 삭제하는 몇 가지 방법 중 세가지 방법에 대해 소개합니다.
1. set
을 사용하는 방법:
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
# 중복 제거
result = list(set(list1) - set(list2))
print(result)
이 방법은 set
을 사용하여 중복된 요소를 제거한 후, 다시 리스트로 변환하는 방법입니다. 새로 수집한 정보(리스트1)에서 이미 알고 있는내용(리스트2)을 뺀다는 모양 그 자체가 코드에 직관적으로 나타나 있어 참 보기 좋은듯 합니다만, 이 방법은 순서가 변경될 수 있어 원본의 순서 유지가 중요한 경우엔 사용하기 어렵습니다.
2. List Comprehension을 사용하는 방법:
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
# 중복 제거
result = [item for item in list1 if item not in list2]
print(result)
이 방법은 리스트 컴프리헨션을 사용하여 중복된 요소를 제거합니다. 각각의 리스트를 재탐색하면서 중복을 제거해 나가야하기 때문에 리스트의 크기가 큰 경우 성능이 떨어질 수 있습니다. 물론 리스트의 모양에 따라 좀 더 간단히 처리해 낼 수도 있고요. 리스트 형태에 따라 적절히 탐색 순서를 조정한다면 빠르게 처리할 수도 있습니다.
3. set
과 intersection
을 사용하는 방법:
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
# 중복 제거
result = list(set(list1).intersection(list2))
print(result)
이 방법은 set
을 사용하여 중복된 요소를 제거하고, intersection
메서드를 사용하여 공통된 요소를 찾습니다.set
의 설명이 조금 부족한듯 하여 덧붙이자면 [1, 1, 1]로 이뤄진 리스트에 set을 사용해 중복을 제거해 줄 수 도 있습니다. 출력된 리스트는 [1]이 됩니다.
위의 방법 중 어떤걸 사용할지는 상황에 따라 달리 적용할 수 있으며 적절한 상황에 적절한 방법을 사용한다면 연산 속도를 조금이라도 올릴 수 있습니다.