콘텐츠 내 자동삽입광고

광고1

posted by 초코생크림빵 2025. 8. 19. 14:10
반응형

set()은 파이썬에서 제공하는 집합 자료형입니다. 수학의 집합(set)과 비슷한 개념으로, 중복을 허용하지 않고, 순서가 없는 데이터 모음을 저장할 때 사용합니다.

 

 

1. set의 기본 특징

  • 중복된 요소는 자동으로 제거됩니다.
  • 순서가 없습니다 → 인덱싱이 불가능합니다. (리스트처럼 set[0]은 불가)
  • mutable(가변형) → 요소 추가(add), 삭제(remove) 가능.
  • 내부 요소는 immutable(불변형) → 리스트, 딕셔너리 같은 것은 요소로 넣을 수 없음 (하지만 튜플은 가능).

 

2. set 생성 방법

 
# 빈 set 생성 s = set() print(s) # 출력: set() # 리스트나 문자열에서 set 생성 s1 = set([1, 2, 3, 3, 2]) print(s1) # 출력: {1, 2, 3} s2 = set("hello") print(s2) # 출력: {'h', 'e', 'l', 'o'} (순서는 랜덤) # 중괄호로 생성 s3 = {1, 2, 3} print(s3) # 출력: {1, 2, 3}
 
 

3. set의 주요 메서드

(1) 요소 추가

 
s = {1, 2} s.add(3) print(s) # 출력: {1, 2, 3}

(2) 요소 여러 개 추가

 
s.update([4, 5, 6]) print(s) # 출력: {1, 2, 3, 4, 5, 6}

(3) 요소 삭제

 
s.remove(2) # 존재하지 않으면 오류 발생 print(s) s.discard(10) # 존재하지 않아도 오류 X
 
 

4. 집합 연산

set은 수학적 집합 연산을 지원합니다.

 
a = {1, 2, 3, 4} b = {3, 4, 5, 6} print(a | b) # 합집합 → {1, 2, 3, 4, 5, 6} print(a & b) # 교집합 → {3, 4} print(a - b) # 차집합 → {1, 2} print(a ^ b) # 대칭차집합 → {1, 2, 5, 6}
 
 

5. 활용 예시

중복 제거하기

 
numbers = [1, 2, 2, 3, 4, 4, 5] unique_numbers = set(numbers) print(unique_numbers) # {1, 2, 3, 4, 5}

리스트로 변환

 
unique_list = list(unique_numbers) print(unique_list) # [1, 2, 3, 4, 5] (순서는 랜덤)
 
 

⚠ 주의할 점

  • set은 순서가 없으므로 인덱싱 불가 → 필요하면 list()로 변환.
  • 요소는 불변 객체만 가능 → 리스트, 딕트는 넣을 수 없음.
  •  
    s = {1, [2, 3]} # ❌ 오류 발생 (TypeError)

📌 요약

  • set()은 중복 제거, 집합 연산에 유용.
  • 순서 없음 → 인덱싱 안됨.
  • 요소는 변경 불가 객체만 가능.

여기서 사용되는 집합의 의미를 정리

 

집합(set)'의 의미는 수학에서 말하는 집합과 동일한 개념으로, 순서가 없고 중복된 요소를 허용하지 않는 데이터의 모음을 뜻합니다.

set()은 비어있는 '집합'을 만드는 함수이며, 이 '집합'에는 다음과 같은 두 가지 핵심적인 특징이 있습니다.

중복 불가 (No Duplicates)

가장 중요한 특징으로, 집합에는 같은 값을 가진 요소가 두 번 이상 존재할 수 없습니다. 만약 중복된 값을 추가하려고 하면, 파이썬은 자동으로 중복을 제거하고 하나의 값만 남깁니다.

Python
 
# 리스트에 중복된 값 존재
my_list = [1, 2, 2, 3, 4, 4, 4]

# set()으로 변환
my_set = set(my_list)

print(my_set) # 출력: {1, 2, 3, 4}

순서 없음 (Unordered)

집합의 요소들은 순서가 정해져 있지 않습니다. 따라서 리스트나 튜플처럼 인덱스(my_set[0])를 사용해 특정 요소에 접근할 수 없습니다. 요소가 추가되거나 삭제될 때마다 내부적인 순서가 바뀔 수 있습니다.

이러한 특징 때문에 집합은 주로 다음과 같은 용도로 사용됩니다.

  • 중복 제거: 데이터에서 중복된 값을 빠르게 제거할 때
  • 교집합, 합집합, 차집합: 두 개 이상의 데이터 집합 간의 관계를 분석할 때 (예: 두 리스트에 공통으로 들어있는 요소 찾기)
  • 요소 존재 여부 확인: 특정 요소가 집합에 있는지 매우 빠르게 확인할 때

따라서 set()을 통해 만들어진 '빈 집합'은 아직 아무런 요소도 포함하고 있지 않지만, 위와 같은 특징과 연산을 수행할 수 있는 데이터 구조를 갖추고 있다는 의미입니다.

 

추가질문)

a=set()는 set라는 데이터 구조, 비어있는 set구조의 객체를 만들어서 a 에 할당한건가요?

네, 정확히 이해하셨습니다. a = set()는 set이라는 데이터 구조비어있는 객체를 만들어서 변수 a에 할당하는 코드입니다.

핵심 요약

  • set(): 비어 있는 집합(set) 객체를 생성하는 생성자 함수입니다.
  • =: 할당 연산자로, 오른쪽에 있는 객체를 왼쪽에 있는 변수 a에 연결합니다.

따라서 이 코드는 '새로운, 비어있는 집합을 만들고 그 집합을 a라는 이름으로 부르겠다'는 의미가 됩니다.

추가 설명

집합(set)은 중복된 요소를 허용하지 않고, 순서가 없는 독특한 특징을 가진 파이썬의 자료형입니다. 따라서 a = set()를 통해 빈 집합을 만든 후, a.add(1)과 같은 메서드를 사용해 요소를 추가할 수 있습니다.

주의할 점: 파이썬에서 빈 딕셔너리({})와 혼동하기 쉽습니다. 빈 집합을 만들 때는 반드시 set()을 사용해야 합니다.

  • my_set = set() 👉 빈 집합
  • my_dict = {} 👉 빈 딕셔너리
반응형

콘텐츠 내 자동삽입광고