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

파이썬으로 두 개 이상의 리스트 합집합(Union) 구하는 방법

합집합(Union) 연산은 두 개의 리스트에 담긴 모든 요소를 가져와 하나의 새로운 리스트에 저장하는 작업을 의미합니다.

List1 :: [1, 2, 3]
List2 :: [4, 5, 6]
List3 :: [1, 2, 3, 4, 5, 6]

알고리즘

Step 1: 두 개의 리스트를 입력받습니다.
Step 2: 합집합 연산을 위해 '+' 연산자를 사용해 두 리스트를 연결합니다.

예제 코드

# UNION OPERATION
A = list()
B = list()
n = int(input("Enter the size of the List :: "))
print("Enter the Element of first list::")
for i in range(n):
    k = int(input(""))
    A.append(k)
print("Enter the Element of second list::")
for i in range(n):
    k = int(input(""))
    B.append(k)
C = A + B
print("THE FINAL LIST IS ::>", C)

실행 결과

Enter the size of the List ::4
Enter the Element of first list::
23
11
22
33
Enter the Element of second list::
33
22
67
45
THE FINAL LIST IS ::> [23, 11, 22, 33, 33, 22, 67, 45]

중복 요소 제거하기

위 예제에서 사용한 + 연산자는 단순히 두 리스트를 이어 붙이는 역할만 하기 때문에, 결과 리스트에 중복된 요소(33, 22)가 그대로 남아 있는 것을 확인할 수 있습니다.

수학적인 의미의 합집합처럼 중복 없이 고유한 값만 유지하고 싶다면 set() 함수를 활용하면 됩니다.

# 중복을 제거한 진짜 합집합
C = list(set(A + B))
print("THE FINAL LIST IS ::>", C)
# 출력: [67, 11, 45, 22, 23, 33]

단, set()은 순서를 보장하지 않으므로 원래 입력 순서를 유지하고 싶다면 아래와 같이 dict.fromkeys()를 사용하는 것이 좋습니다.

# 순서를 유지하면서 중복 제거
C = list(dict.fromkeys(A + B))
print("THE FINAL LIST IS ::>", C)
# 출력: [23, 11, 22, 33, 67, 45]

정리

  • 두 리스트를 단순히 연결하려면 + 연산자를 사용합니다.
  • 중복을 제거한 합집합이 필요하면 set(A + B)를 사용합니다.
  • 입력 순서를 유지한 채 중복을 제거하려면 dict.fromkeys(A + B)를 활용합니다.