파이썬 튜토리얼-데이터 타입 세트

Jinku Hu 2023년1월30일
  1. 파이썬 세트 만들기
  2. 파이썬 세트 업데이트
  3. 파이썬 세트에서 요소 제거
  4. 파이썬 세트 연산
  5. 파이썬 세트 메소드
  6. 다른 파이썬 세트 연산
  7. 파이썬 내장 함수
  8. 파이썬 프로즌 셋
파이썬 튜토리얼-데이터 타입 세트

이 섹션에서는 Python 에서 집합을 만드는 방법과 집합에서 요소를 추가 및 제거하는 방법에 대해 설명합니다.

세트에는 ** 고유 ** 항목이 포함되며 ** 순서가없는 ** 요소 목록입니다.

정보
set 은 변경 가능한 객체이므로 세트에서 항목을 추가하고 삭제할 수 있습니다.

파이썬 세트 만들기

중괄호{}를 사용하여 Python 의 집합을 만들 수 있으며 항목은 쉼표로 구분됩니다. 내장 메소드 set()를 사용하여 세트를 생성 할 수도 있습니다.

세트의 요소는 다른 데이터 유형이 될 수 있습니다. 세트의 요소는 변경 불가능해야합니다. 예를 들어, 튜플을 세트의 요소로 가질 수 있지만 세트 또는 사전 또는 목록을 세트의 요소로 가질 수는 없습니다.

>>> x = {3, 5, 7, 2, 4, 5}		
>>> print(x)		#prints the set variable
{2, 3, 4, 5, 7}
>>> print(type(x))		#checking type of x
<class 'set'>

빈 매개 변수와 함께 set()메서드를 사용하여 빈 목록을 만들 수 있습니다. 빈 객체를 만들기 위해{}를 쓰면 사전으로 해석됩니다.

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

>>> x = set()
>>> print(type(x))
<class 'set'>

파이썬 세트 업데이트

set 은 순서가 지정된 데이터 유형이 아니므로 인덱싱 및 슬라이싱을 사용하여 세트의 요소를 변경할 수 없습니다.

add()메소드를 사용하여 단일 요소를 세트에 추가 할 수 있습니다. 세트에 하나 이상의 요소를 추가하려면 update()메소드를 사용해야합니다.

>>> s = {2, 4}
>>> print(s)
{2, 4}

>>> s.add(6)
>>> print(s)
{2, 4, 6}

>>> s.update([2, 4, 6])
>>> print(s)
{2, 4, 6}

>>> s.update([5,6], {7, 8, 9})
>>> print(s)
{2, 4, 5, 6, 7, 8, 9}

파이썬 세트에서 요소 제거

세트에서 요소를 제거하려면 discard()메소드 또는 remove()메소드를 사용할 수 있습니다.

이들 메소드의 차이점은 삭제 될 요소가 세트에 없으면 discard()메소드가 아무 것도 프롬프트하지 않는 반면, 삭제 될 요소가 없으면 remove()는 오류를 생성한다는 것입니다.

>>> s = {2, 4, 5, 6, 7, 8, 9}
>>> print(s)
{2, 4, 5, 6, 7, 8, 9}

>>> s.discard(6)
>>> print(s)
{2, 4, 5, 7, 8, 9}

>>> s.remove(8)
>>> print(s)
{2, 4, 5, 7, 9}

>>> s.discard(6)		#no error
>>> s.remove(8)			#generated an error
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    s.remove(8)
KeyError: 8

pop()을 사용하여 세트에서 아이템을 제거 할 수도 있습니다. pop()은 하나의 ** 임의 ** 설정 요소를 제거하고 반환합니다.

>>> s = set("Python")
>>> s
{'o', 'n', 'h', 'P', 'y', 't'}
>>> s.pop()
o
>>> s.pop()
n
>>> s
{'h', 'P', 'y', 't'}
>>> s.clear()
>>> print(s)
set()

set.clear() 메소드를 사용하여 모든 설정 요소를 지울 수 있습니다.

>>> s = set("Python")
>>> s.clear()
>>> s
set()

파이썬 세트 연산

union,intersection,differencesymmetric_difference 와 같은 작업을 수행 할 수 있습니다.

xy 의 두 세트가 있다고 가정 해 봅시다.

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 10, 11, 12}

노동 조합

두 세트의 합집합은 두 세트의 모든 요소를 ​​포함하는 새 세트를 생성합니다.

공용 연산을 수행하려면|연산자 또는 union()메소드를 사용할 수 있습니다.

>>> print(x | y)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

#using union() method on x
>>> x.union(y)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
#union on y
>>> y.union(x)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

파이썬 세트 교차

두 세트의 교집합은 두 세트에서 공통 인 항목을 포함하는 새로운 세트를 생성합니다.

교차 연산을 수행하려면&연산자 또는 intersection()메소드를 사용할 수 있습니다.

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x & y)
{1, 2, 6}

#using intersection() method on x
>>> x.intersection(y)
{1, 2, 6}
#intersection on y
>>> y.intersection(x)
{1, 2, 6}

파이썬 세트 차이

두 세트의 차이로 인해 두 번째 세트에없는 첫 번째 세트의 요소가 포함 된 새 세트가 생성됩니다.

예를 들어,x-yy 가 아닌 x 의 요소입니다. 마찬가지로 y-xx 가 아닌 y 의 요소입니다.

차이를 수행하려면- 연산자 또는 difference()메소드를 사용할 수 있습니다.

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x - y)
{3, 4, 5}

#using difference() method on x
>>> x.difference(y)
{3, 4, 5}
#diference on y
>>> y.difference(x)
{8, 9, 7}

파이썬 세트 대칭 차이

두 세트의 대칭 적 차이로 인해 두 세트에서 공통적이지 않은 요소가 포함 된 새 세트가 생성됩니다.

대칭 적 차이를 수행하려면^연산자 또는 symmetric_difference()메소드를 사용할 수 있습니다.

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x ^ y)
{3, 4, 5, 7, 8, 9}

#using symmetric_difference() method on x
>>> x.symmetric_difference(y)
{3, 4, 5, 7, 8, 9}
#symmetric_diference on y
>>> y.symmetric_difference(x)
{3, 4, 5, 7, 8, 9}

파이썬 세트 메소드

다음은 Python 세트에 적용 할 수있는 메소드 목록입니다.

방법 기술
add() 세트에 요소를 추가
clear() 세트의 요소를 지우십시오 (전체 세트를 지 웁니다)
copy() 세트의 복사본을 반환
차이() 두 번째 세트에없는 첫 번째 세트의 요소를 포함하는 새 세트를 리턴합니다.
difference_update() 현재 세트에서 다른 세트의 모든 요소를 ​​제거
discard() 세트에서 특정 요소를 제거
교차() 두 세트에서 공통적 인 항목이 포함 된 새 세트를 반환합니다.
intersection_update() 이 세트와 다른 세트의 교차로 세트를 업데이트하십시오.
isdisjoint() 두 세트가 널 교차를 초래할 때 ‘참’을 리턴합니다.
issubset() 다른 세트에 현재 세트가 있으면 True를 반환합니다.
issuperset() 현재 세트에 다른 세트가 있으면 True 를 반환
pop() 집합에서 요소를 반환
제거() 세트에서 특정 요소를 제거하십시오. 요소가 세트에 없으면 오류가 생성됩니다.
symmetric_difference() 두 세트에서 공통적이지 않은 요소를 포함하는 새로운 세트를 반환합니다.
symmetric_difference_update() 이 세트의 대칭 차이가있는 세트를 다른 세트로 업데이트
연합() 두 세트의 모든 요소를 ​​포함하는 새로운 세트를 반환합니다.
update() 이 세트를 다른 세트와 결합하여 세트를 업데이트하십시오.

다른 파이썬 세트 연산

회원 확인 설정

in 키워드는 아이템이 세트의 멤버인지 아닌지를 테스트합니다.

>>> s = set("Blue")
>>> print('o' in s)
False
>>> print('l' in s)
True

집합을 반복

for 루프를 사용하여 세트를 반복 할 수 있습니다.

for i in set("Blue"):
    print(i)

결과:

B
l
u
e

파이썬 내장 함수

다음은 다른 작업을 수행하기 위해 세트와 함께 사용할 수있는 일부 내장 기능입니다.

기능 기술
all() 세트의 모든 요소가 ‘참’이면 ‘참’을 반환합니다. 또한 집합이 비어 있으면 ‘참’을 반환합니다.
any() 세트의 요소 중 하나라도 True 이면 True 를 리턴합니다. 집합이 비어 있으면 False를 반환합니다.
enumerate() 집합의 모든 요소의 색인과 값을 튜플로 반환합니다. 열거 객체를 돌려줍니다.
len() 세트 내의 아이템 수 또는 세트의 길이를 돌려줍니다.
set() 세트를 정의하십시오.
max() 세트의 최대 항목을 반환합니다.
분() 세트의 최소 항목을 반환합니다.
정렬() 세트의 요소의 정렬 된리스트를 돌려줍니다.
sum() 세트의 모든 요소의 합계를 돌려줍니다.

파이썬 프로즌 셋

고정 세트는 한 번 할당 될 때 요소를 업데이트 할 수없는 특수 세트입니다. 냉동 세트는 변경할 수없는 세트입니다.

세트는 변경 가능하므로 사전에서 키로 사용할 수 없지만 고정 된 세트는 변경할 수 없으므로 고정 된 세트를 사전 키로 사용할 수 있습니다.

고정 세트는 frozenset()메소드를 사용하여 만들 수 있습니다.

다음은 frozenset 에서 지원하는 몇 가지 방법입니다.

  • 복사()
  • 차이()
  • 교차()
  • isdisjoint()
  • issubset()
  • issuperset()
  • symmetric_difference()
  • 유니온()
>>> x = frozenset([2,6,3,9])
>>> y = frozenset([6,1,2,4])
>>> x.difference(y)
frozenset({9, 3})
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook