[Python 기초] 파이썬 자료형 - 집합자료형(Set)

업데이트:

개요

jpg


1. 집합자료형 생성

set([]) 또는 set("문자열")로 만들 수 있다.

s1 = set([1,2,3])
s1
[Output] {1, 2, 3}

set(["문자열"])set("문자열")은 차이가 있음을 유의하자.

s2 = set(["Helloworld"])
s2
[Output] {'Helloworld'}
s3 = set("Helloworld")
s3
[Output] {'H', 'd', 'e', 'l', 'o', 'r', 'w'}

set("문자열")의 경우 철자 하나씩 분리하고, 중복된 문자를 허용하지 않는다.


2. 집합자료형의 특징

s1 = set([1,2,3])
l1 = list(s1)
l1
[Output] [1, 2, 3]
print(type(s1))
print(type(l1))
[Output] <class 'set'>
	 <class 'list'>
s1[0]
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-21-5e6c84907a45> in <module>()
----> 1 s1[0]

TypeError: 'set' object does not support indexing

리스트(list)는 순서가 존재하지만 집합(set)은 순서를 허용하지 않아 인덱싱이 불가능하다.

l1[0]
[Output] 1
  • 집합자료형의 특징
    • 중복을 허용하지 않음
    • 순서가 없음


3. 집합자료형의 사용 : 교집합, 합집합, 차집합

굳이 집합자료형을 사용하는 이유는, 집합 내의 요소들의 교집합, 합집합, 차집합을 구할때 유용하게 사용되기 때문이다. 각각 기호로 구하는 방법과 함수를 이용한 방법이 존재한다.

  • 교집합(intersection)
s1 = set([1,2,3,4,5,6])
s2 = set([4,5,6,7,8,9])

두 집합자료형 생성.

s1 & s2
[Output] {4, 5, 6}

&기호를 이용해 공통요소 추출.

s1.intersection(s2)
[Output] {4, 5, 6}

intersection() 함수를 이용한 방법

  • 합집합(Union)
s1 | s2
[Output] {1, 2, 3, 4, 5, 6, 7, 8, 9}

|기호를 이용해 요소 합치기
집합자료형은 기본적으로 중복을 허용하지 않으므로, 중복된 요소 없이 합쳐준다.

s1.union(s2)
[Output] {1, 2, 3, 4, 5, 6, 7, 8, 9}

union()함수를 이용한 방법.

  • 차집합(Difference)
s1 - s2
[Output] {1, 2, 3}

-기호를 이용해 s1에 포함된 s2의 요소 {4,5,6} 빼기

s1.difference(s2)
[Output] {1, 2, 3}

difference()함수를 이용한 방법.


4. 관련 함수들

  • 값 1개 추가하기(add)
s1 = set([1,2,3])
s1.add(4)
s1
[Output] {1, 2, 3, 4}
  • 값 여러개 추가하기(update)
s1 = set([1,2,3])
s1.update([4,5,6])
s1
[Output] {1, 2, 3, 4, 5, 6}
  • 특정값 제거하기(remove)
s1 = set([1,2,3])
s1.remove(2)
s1
[Output] {1, 3}


Reference

도서 [점프 투 파이썬] 를 공부하며 작성하였습니다.

댓글남기기