Python

[Python] 시퀀스 - 세트(set)

디지몬진화 2024. 6. 14. 15:59

1. 세트 알아보기

- 수학에서의 집합과 동일

- 중복되지 않은 항목들의 집합

 

2. 세트의 예시

>>> numbers = {2, 1, 3}
>>> numbers
{1, 2, 3}
# 세트의 크기는 len() 함수로 알 수 있다.
>>> len(numbers)
3
# 세트는 집합이기 때문에 요소가 중복되면 자동으로 중복된 요소를 제거한다.
>>> cities = { "Paris", "Seoul", "London", "Berlin", "Paris", "Seoul" }
>>> cities
{'Seoul', 'London', 'Berlin', 'Paris’}
# 비어 있는 세트를 생성하려면 set() 함수를 사용한다.
>>> numbers = set()
# 어떤 항목이 세트 안에 있는지를 검사하려면 in 연산자를 사용하면 된다.
>>> numbers = {2, 1, 3}
>>> if 2 in numbers:
        print("집합 안에 2가 있습니다.")
집합 안에 2가 있습니다.
# 세트의 항목은 순서가 없기 때문에 위치를 가지고 세트의 항목에 접근할 수는 없다. 하지만 for 반복문을 이용하여 각 항목들에 접근할 수 있다.
>>> numbers = {2, 1, 3}
>>> for x in numbers:
        print(x, end=" ")
123

 


3. 세트의 구현

- 세트는 모든 요소들을 해싱(hashing)을 이용하여 저장하고 관리 --> 요소들은 해싱가능하여야 함

- 해싱 : 각각의 객체에 식별할 수 있는 숫자 코드를 부여하여 객체를 테이블에 저장하는 것

>>> numbers = {1, 2, [3, 4, 5]}
...
TypeError: unhashable type: 'list'

 

 

4. 세트, 리스트, 문자열

# 리스트로부터 세트를 생성하는 것은 가능하다.
>>> set([1, 2, 3, 1, 2, 3])
{1, 2, 3}

# 문자열로부터 세트를 생성하는 것도 가능하다.
>>> set("abcdefa")
{'f', 'a', 'b', 'e', 'c', 'd'}

 

 

5. 세트에 요소 추가, 삭제하기

- add() : 세트에 요소 추가

- update() : 요소 여러개를 추가할 때 사용

- discard() : 세트에 요소 삭제

- remove() : 세트에 요소 삭제

- clear() : 세트의 전체 요소 삭제

>>> numbers.add(4)
>>> numbers
{1, 2, 3, 4}

>>> numbers.update([2, 3, 4, 5])
>>> numbers
{1, 2, 3, 4, 5}

# 요소를 삭제할 때는 discard() 메소드를 사용할 수 있다.
>>> numbers.discard(5)
>>> numbers
{1, 2, 3, 4}
>>> numbers.remove(6)  # 예외가 발생된다.

# clear() 메소드는 세트의 전체 요소를 지운다.
>>> numbers.clear()   # 세트의 크기가 0이 된다.

 

 

6. 부분 집합 연산

>>> A = {1, 2, 3}
>>> B = {1, 2, 3}
>>> A == B
True

>>> A = {1, 2, 3, 4, 5}
>>> B = {1, 2, 3}
>>> B < A
True

>>> A > B
True

 

7. 세트 연산

- in키워드 : 요소가 집합에 포함되어 있는지 검사

>>> mySet = set("banana")
>>> 'a' in mySet
True

>>> 'p' not in mySet
True

 

8. 집합 연산

8-1 합집합

>>> A = {1, 2, 3}
>>> B = {3, 4, 5}

>>> A | B
{1, 2, 3, 4, 5}
>>> A.union(B)
{1, 2, 3, 4, 5}
>>> B.union(A)
{1, 2, 3, 4, 5}

 

8-2 교집합

>>> A = {1, 2, 3}
>>> B = {3, 4, 5}

>>> A & B
{3}
>>> A.intersection(B)
{3}

 

8-3 차집합

>>> A = {1, 2, 3}
>>> B = {3, 4, 5}

>>> A - B
{1, 2}
>>> A.difference(B)
{1, 2}