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

파이썬으로 정수 배열의 고유 요소(중복 제거) 출력하기

정수 배열이 주어졌을 때, 배열에는 중복된 요소가 포함될 수 있습니다. 이 글에서는 배열에서 고유한(distinct) 값만 골라서 화면에 출력하는 파이썬 프로그램을 만들어 보겠습니다.

예제

입력:: A = [1, 2, 3, 4, 2, 3, 5, 6]
출력:: [1, 2, 3, 4, 5, 6]

위 예제에서 2와 3은 배열 안에 두 번씩 등장하지만, 결과에는 각각 한 번만 표시됩니다.

알고리즘

  1. 배열의 요소를 입력받습니다.
  2. 배열의 요소를 하나씩 순서대로 선택합니다.
  3. 선택한 요소가 이전에 이미 출력되었는지 확인합니다.
  4. 플래그 변수를 0으로 초기화하여 사용합니다. 요소가 이미 출력된 적이 있으면 플래그를 1로 설정하고, 처음 등장하는 요소라면 0을 유지합니다.
  5. 플래그가 0인 요소, 즉 중복되지 않은 고유 요소만 출력합니다.

예제 코드

# 주어진 배열의 모든 고유 요소를 출력하는 파이썬 프로그램
def distinctelement(A, n1):
   print("고유 요소 목록 ::>")
   for i in range(0, n1):
      c = 0
      for j in range(0, i):
         if (A[i] == A[j]):
            c = 1
            break
      if (c == 0):
         print(A[i])

# 드라이버 코드
A = list()
n1 = int(input("리스트의 크기를 입력하세요 ::"))
print("리스트의 요소를 입력하세요 ::")
for i in range(int(n1)):
   k = int(input(""))
   A.append(k)
distinctelement(A, n1)

실행 결과

리스트의 크기를 입력하세요 ::4
리스트의 요소를 입력하세요 ::
1
2
2
4
고유 요소 목록 ::>
1
2
4

코드 설명

distinctelement() 함수는 배열과 그 크기를 매개변수로 받습니다. 바깥쪽 반복문(i)은 현재 검사 중인 요소를 가리키고, 안쪽 반복문(j)은 그 앞에 있는 모든 요소와 비교합니다.

현재 요소 A[i]가 앞선 요소 A[j]와 같다면 중복 요소이므로 플래그 c1로 설정하고 내부 반복문을 종료합니다. 반복문이 끝난 뒤에도 c == 0이라면 해당 요소는 처음 등장한 것이므로 출력합니다.

참고: 더 간단한 방법 — set() 활용하기

실무에서는 위와 같은 이중 반복문 대신 파이썬의 set() 자료형을 사용하면 한 줄로 중복을 제거할 수 있습니다.

A = [1, 2, 3, 4, 2, 3, 5, 6]
print(list(set(A)))  # [1, 2, 3, 4, 5, 6] (순서는 보장되지 않음)

단, set()은 원래의 입력 순서를 유지하지 않으므로 순서가 중요하다면 dict.fromkeys(A)를 활용하는 것도 좋은 방법입니다.

A = [1, 2, 3, 4, 2, 3, 5, 6]
print(list(dict.fromkeys(A)))  # [1, 2, 3, 4, 5, 6] (순서 유지)