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

파이썬에서 리스트의 모든 요소가 고유한지 확인하는 방법

숫자로 이루어진 리스트 nums가 주어졌을 때, 리스트의 모든 요소가 서로 중복되지 않고 고유한지 확인해야 하는 경우가 있습니다.

예를 들어, 입력이 nums = [2, 3, 6, 5, 1, 8]이라면 모든 요소가 고유하므로 결과는 True가 됩니다.

문제 해결 접근 방식

이 문제는 집합(set) 자료구조를 활용하면 간단하게 해결할 수 있습니다. 집합은 중복된 값을 저장하지 않는 특성이 있기 때문입니다. 해결 단계는 다음과 같습니다.

  • 리스트의 길이를 n에 저장합니다.
  • 새로운 빈 집합 s를 생성합니다.
  • 0부터 n까지 반복하면서 리스트의 각 요소를 집합 s에 삽입합니다.
  • 집합의 크기와 원래 리스트의 길이가 같으면 True를 반환하고, 그렇지 않으면 False를 반환합니다.

집합은 중복 요소를 자동으로 제거하기 때문에, 만약 리스트에 중복된 값이 있다면 집합의 크기가 리스트의 길이보다 작아집니다. 이 특성을 이용해 고유 여부를 판별할 수 있습니다.

구현 예제

다음 코드를 통해 더 잘 이해할 수 있습니다.

def solve(l) :
    n = len(l)
    s = set()
    for i in range(0, n):
        s.add(l[i])
    return (len(s) == len(l))

l = [2, 3, 6, 5, 1, 8]
print(solve(l))

입력

[2, 3, 6, 5, 1, 8]

출력

True

더 간단한 방법

사실 파이썬에서는 위의 반복문 없이 한 줄로도 동일한 결과를 얻을 수 있습니다.

def solve(l):
    return len(set(l)) == len(l)

l = [2, 3, 6, 5, 1, 8]
print(solve(l))  # True

두 방법 모두 시간 복잡도는 O(n)으로 효율적이며, 리스트의 크기가 커져도 빠르게 동작합니다.