[Python] 두 리스트 중복 제거, 3가지 방법
July 19, 2024
두 리스트가 갖고 있는 요소들 중에 중복 값을, 두 리스트에서 서로 제거하는 방법에 대해서 알아보겠습니다.
1. List comprehension을 이용한 방법
리스트 컴프리헨션을 이용하여 두개의 리스트의 중복을 서로 찾아서 제거할 수 있습니다.
for문을 이용하여 동일하게 구현할 수 있지만, 리스트 컴프리헨션을 사용하면 한 줄로 구현할 수 있습니다.
[item for item in list1 if item not in list2]
: list1의 값 중에 list2에 없는 것만 리스트로 리턴
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
# list1에서 중복이 제거된 리스트
result1 = [item for item in list1 if item not in list2]
# list2에서 중복이 제거된 리스트
result2 = [item for item in list2 if item not in list1]
print(result1)
print(result2)
Output:
[1, 2]
[6, 7]
2. filter()를 이용한 방법
filter(lambda, list)
는 list의 요소들 중에 lambda 함수에 대해서 true인 것만 Iterator로 리턴됩니다.
filter(lambda x: x not in list2, list1)
: list1의 요소들 중에 list2에 없는 것만 Iterator로 리턴list(Iterator)
: Iterator로 참조되는 요소들을 리스트로 변환
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
# list1에서 중복이 제거된 리스트
result1 = list(filter(lambda x: x not in list2, list1))
# list2에서 중복이 제거된 리스트
result2 = list(filter(lambda x: x not in list1, list2))
print(result1)
print(result2)
Output:
[1, 2]
[6, 7]
3. for문을 이용한 방법
for문을 이용하여 직접 구현할 수도 있습니다. 리스트 컴프리헨션과 동일한 방식으로 구현하였습니다.
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
# list1에서 list2와 중복 요소 제거
result1 = []
for item in list1:
if item not in list2:
result1.append(item)
# list2에서 list1과 중복 요소 제거
result2 = []
for item in list2:
if item not in list1:
result2.append(item)
print(result1)
print(result2)
Output:
[1, 2]
[6, 7]