Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 두 리스트의 차이 구하기 – set() 활용 방법

이 문제에서는 두 개의 리스트가 주어졌을 때, 두 리스트 간의 차이를 출력하는 것이 목표입니다. 파이썬은 이를 손쉽게 처리할 수 있도록 set() 메서드를 제공하며, 여기서는 바로 이 메서드를 활용합니다.

셋(set)은 중복 요소가 없는 순서 없는(unordered) 컬렉션입니다. 또한 셋 객체는 합집합(union), 교집합(intersection), 차집합(difference), 대칭 차집합(symmetric difference)과 같은 수학적 연산도 지원합니다.

예제

입력:: A = [10, 15, 20, 25, 30, 35, 40]
      B = [25, 40, 35]
출력:
[10, 20, 30, 15]

설명

차이 리스트 = A - B

즉, 첫 번째 리스트 A에는 존재하지만 두 번째 리스트 B에는 없는 요소들만 추출하여 결과로 반환합니다.

알고리즘

1단계: 두 개의 배열(리스트)을 입력받습니다.
2단계: 리스트를 명시적으로 셋(set)으로 변환합니다.
3단계: 뺄셈 연산자(-)를 사용해 한 셋에서 다른 셋을 빼줍니다.

예제 코드

# set()을 사용하여 두 리스트의 차이를 구하는 파이썬 코드
def Diff(A, B):
   print("두 리스트의 차이 ::>")
   return (list(set(A) - set(B)))

# 드라이버 코드
A = list()
n1 = int(input("첫 번째 리스트의 크기를 입력하세요 ::"))

print("첫 번째 리스트의 요소를 입력하세요 ::")
for i in range(int(n1)):
   k = int(input(""))
   A.append(k)

B = list()
n2 = int(input("두 번째 리스트의 크기를 입력하세요 ::"))
print("두 번째 리스트의 요소를 입력하세요 ::")
for i in range(int(n2)):
   k = int(input(""))
   B.append(k)

print(Diff(A, B))

실행 결과

첫 번째 리스트의 크기를 입력하세요 ::5
첫 번째 리스트의 요소를 입력하세요 ::
11
22
33
44
55
두 번째 리스트의 크기를 입력하세요 ::4
두 번째 리스트의 요소를 입력하세요 ::
11
55
44
99
두 리스트의 차이 ::>
[33, 22]

참고: 셋은 순서가 없기 때문에 결과 리스트의 요소 순서는 실행 시마다 달라질 수 있습니다. 만약 원본 리스트의 순서를 유지한 채 차이를 구하고 싶다면 리스트 컴프리헨션(list comprehension)을 사용하는 방법도 있습니다. 예를 들어 [x for x in A if x not in B]와 같이 작성하면 A의 순서를 그대로 유지하면서 B에 없는 요소만 필터링할 수 있습니다.