본문 바로가기
Python/개념

Day 4-1. 컬렉션 타입 - 세트

by 사라리24 2024. 3. 14.
SMALL

 

1. 세트(Set)

세트(set)는 중복되지 않는 항목들의 컬렉션입니다.

컬렉션 생성함수 특징 예시
리스트 list() 추가, 수정, 삭제 언제나 가능 a = [1,2,3]
튜플 tuple() 생성되고 나면 변경 불가능 a =(1,2,3)
세트 set() 중복된 값의 저장 불가능 a ={1,2,3}
딕셔너리 dict() 키 + 값으로 관리 a ={'age':25}

 

1-1. 생성

 

{ } 중괄호로 생성하고 

, 로 요소들을 구분합니다.

 
  s1 = {}
  print(s1)
  print(type(s1))
 
{}
<class 'dict'>

ㄴ 결과는 딕셔너리 입니다.

 
 
  s1 = {1, 3, 5, 7}
  print(s1)
  print(type(s1))
    
 
{1, 3, 5, 7}
<class 'set'>

ㄴ 자료를 넣으면 Set 이 됩니다

  
  s2 = set([1,3,5,7])
  print(s2)
  print(type(s2))
 
{1, 3, 5, 7}
<class 'set'>

ㄴ 리스트 [ ]  에 넣고 Set에 넣어서 선언할 수 있습니다.

  
  li1 = [1,2,3,4]
  s2 = set(li1)
  print(s2)
  print(type(s2))
 
{1, 2, 3, 4}
<class 'set'>

ㄴ 리스트(list)에 넣어서 Set으로 형변환 가능합니다

  
   s3 = { 1,3,5,3,7,9,1}
  print(s3)
 
{1, 3, 5, 7, 9}

ㄴ 중복된 자료를 자동으로 제거합니다.

 
  li2= {1,3,4,3,7,9,1}
  print(li2)
  s4 = set(li2)
  print(s4)
 
{1, 3, 4, 7, 9}
{1, 3, 4, 7, 9}

 

!! 중요한 부분 !!

Set 은 순서가 없고 인덱싱을 할 수 없습니다.

 

 

1-2. 메소드

 

 

 

add( )

: 세트에 요소를 추가합니다.

 
  s1 = {100, 200}
  s1.add(150)
  print(s1)
  s1.add(50)
  print(s1)
 
{200, 100, 150}
{200, 50, 100, 150}

ㄴ add를 사용할 시, 어디에 추가 될지 알 수 없습니다.

 

 

 

 

remove( )

: 세트 요소를 제거, 단 요소가 없으면 에러가 발생합니다.

  
  s1 = {10, 20, 30}
  s1.remove(20)
  print(s1)
{10, 30}

 

 

 

 

discard( )

: 세트 요소를 제거, 단 요소가 없어도 에러가 발생하지 않습니다.

  
 
  s1 = {10, 20, 30}
  s1.discard(20)
  print(s1)
  s1.discard(20)
  print(s1)
{10, 30}
{10, 30}

 

 

 

copy( )

: 세트를 복사합니다.

  
 
  s1 = {10, 20, 30}
  s2 = s1.copy() #s2 !=s1
  print(s1)
  print(s2)
  print(id(s1))
  print(id(s2))
 
133622225256512
133622224272992

 ㄴ 복사했더라도 주소값은 다릅니다.

 

 

 

union( )

: 세트의 합집합

   
  s1 = {10, 20, 30, 40, 50}
  s2 = {30, 40, 50, 60, 70}
  result1 = s1.union(s2)
  print(result1)
  result2 = s1 | s2
  print(result2)
 
{70, 40, 10, 50, 20, 60, 30}
{70, 40, 10, 50, 20, 60, 30}

 ㄴ 두가지 방법 다 사용 가능합니다.

 

 

 

intersection( )

: 세트의 교집합

    
  s1 = {10, 20, 30, 40, 50}
  s2 = {30, 40, 50, 60, 70}
  result1 = s1.intersection(s2)
  print(result1)
  result2 = s1 & s2
  print(result2)
 
{40, 50, 30}
{40, 50, 30}

 ㄴ 두가지 방법 다 사용 가능합니다.

 

 

 

difference( )

: 세트의 차집합

    
   s1 = {10, 20, 30, 40, 50}
  s2 = {30, 40, 50, 60, 70}
  result1 = s1.difference(s2)
  print(result1)
  result2 = s1 - s2
  print(result2)
 
{10, 20}
{10, 20}

 ㄴ 두가지 방법 다 사용 가능합니다.

 

 

 

symmetric_difference( )

: 세트의 대칭차집합

     
  s1 = {10, 20, 30, 40, 50}
  s2 = {30, 40, 50, 60, 70}
  result1 = s1.symmetric_difference(s2)
  print(result1)
  result2 = s1 ^ s2
  print(result2)
 
{20, 70, 10, 60}
{20, 70, 10, 60}

 ㄴ 두가지 방법 다 사용 가능합니다.

 

 

 

'Python > 개념' 카테고리의 다른 글

Day 4-3. 파이썬 연산자  (0) 2024.03.14
Day 4-2. 컬렉션 타입 - 딕셔너리  (1) 2024.03.14
Day 3-2. 컬렉션 타입 - 튜플  (0) 2024.03.13
Day 3-1. 컬렉션 타입 - 리스트  (0) 2024.03.13
Day 2-4. 과제  (0) 2024.03.12