logo

Python의 집합

Python 프로그래밍의 집합은 반복 가능하고 변경 가능하며 중복 요소가 없는 순서가 지정되지 않은 컬렉션 데이터 유형입니다.

집합은 { }(중괄호로 묶인 값)으로 표시됩니다.



세트를 사용하는 것의 가장 큰 장점은 목록 , 특정 요소가 집합에 포함되어 있는지 확인하는 고도로 최적화된 방법이 있다는 것입니다. 이는 해시 테이블이라는 데이터 구조를 기반으로 합니다. 집합은 순서가 없기 때문에 목록에서처럼 색인을 사용하여 항목에 액세스할 수 없습니다.

Python 세트의 예

파이썬3








var>=> {>'Geeks'>,>'for'>,>'Geeks'>}> type>(var)>

>

>

산출:

set>

시간 복잡도: O(1)
보조 공간: O(1)

Python Set 메서드를 사용한 유형 캐스팅

Python set() 메서드는 유형 캐스팅에 사용됩니다.

파이썬3




# typecasting list to set> myset>=> set>([>'a'>,>'b'>,>'c'>])> print>(myset)> # Adding element to the set> myset.add(>'d'>)> print>(myset)>

>

>

산출:

Python 세트는 순서가 지정되지 않은 데이터 유형입니다. 즉, 세트의 요소가 어떤 순서로 저장되는지 알 수 없습니다.

{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}>

시간 복잡도: O(n)
보조 공간: O(n)

Python Set으로 고유성과 불변성을 확인하세요.

Python 세트는 중복된 값을 가질 수 없으며 일단 생성되면 해당 값을 변경할 수 없습니다.

파이썬3




# Python program to demonstrate that> # a set cannot have duplicate values> # and we cannot change its items> # a set cannot have duplicate values> myset>=> {>'Geeks'>,>'for'>,>'Geeks'>}> print>(myset)> # values of a set cannot be changed> myset[>1>]>=> 'Hello'> print>(myset)>

>

>

산출:

첫 번째 코드는 세트가 중복된 값을 가질 수 없음을 설명합니다. 그 안의 모든 항목은 고유한 값을 갖습니다.

두 번째 코드에서는 세트가 생성된 후에는 값을 할당하거나 변경할 수 없기 때문에 오류가 발생합니다. 세트에 있는 항목만 추가하거나 삭제할 수 있습니다.

{'Geeks', 'for'} TypeError: 'set' object does not support item assignment>

Python 세트를 사용한 이종 요소

Python 세트는 이종 요소를 저장할 수 있습니다. 즉, 세트는 문자열, 정수, 부울 등의 데이터 유형을 혼합하여 저장할 수 있습니다.

파이썬3

자바의 생성자




# Python example demonstrate that a set> # can store heterogeneous elements> myset>=> {>'Geeks'>,>'for'>,>10>,>52.7>,>True>}> print>(myset)>

바이트 배열을 문자열로

>

>

산출:

{True, 10, 'Geeks', 52.7, 'for'}>

시간 복잡도: O(n)
보조 공간: O(n)

Python 냉동 세트

냉동 세트 Python에서 고정된 집합이나 적용되는 집합에 영향을 주지 않고 결과를 생성하는 메서드와 연산자만 지원하는 불변 객체입니다. Python에서는 Frozenset() 메서드를 사용하여 수행할 수 있습니다.

세트의 요소는 언제든지 수정될 수 있지만 고정된 세트의 요소는 생성 후에도 동일하게 유지됩니다.

매개변수가 전달되지 않으면 빈 Frozenset이 반환됩니다.

파이썬




# Python program to demonstrate differences> # between normal and frozen set> # Same as {'a', 'b','c'}> normal_set>=> set>([>'a'>,>'b'>,>'c'>])> print>(>'Normal Set'>)> print>(normal_set)> # A frozen set> frozen_set>=> frozenset>([>'e'>,>'f'>,>'g'>])> print>(>' Frozen Set'>)> print>(frozen_set)> # Uncommenting below line would cause error as> # we are trying to add element to a frozen set> # frozen_set.add('h')>

>

>

산출:

Normal Set {'a', 'c', 'b'} Frozen Set {'e', 'g', 'f'}>

시간 복잡도: O(n)
보조 공간: O(n)

Set의 내부 작업

이는 해시 테이블이라는 데이터 구조를 기반으로 합니다. 동일한 인덱스 위치에 여러 값이 있는 경우 값이 해당 인덱스 위치에 추가되어 연결 목록을 형성합니다.

Python 세트는 더미 변수가 있는 사전을 사용하여 구현됩니다. 여기서 핵심은 시간 복잡도에 대해 더 큰 최적화를 통해 멤버 세트입니다.

구현 설정:

Python의 집합 - 내부 작업

단일 HashTable에 대한 수많은 작업으로 설정:

Python의 집합 - 해시 테이블

집합에 대한 방법

Python 세트에 요소 추가

세트에 삽입은 다음을 통해 수행됩니다. 설정.추가( ) 함수를 사용하여 적절한 레코드 값을 생성하여 해시 테이블에 저장합니다. 항목을 확인하는 것과 동일합니다. 즉, 평균 O(1)입니다. 그러나 최악의 경우에는 이렇게 될 수 있습니다. 에) .

파이썬3




# A Python program to> # demonstrate adding elements> # in a set> # Creating a Set> people>=> {>'Jay'>,>'Idrish'>,>'Archi'>}> print>(>'People:'>, end>=> ' '>)> print>(people)> # This will add Daxit> # in the set> people.add(>'Daxit'>)> # Adding elements to the> # set using iterator> for> i>in> range>(>1>,>6>):> >people.add(i)> print>(>' Set after adding element:'>, end>=> ' '>)> print>(people)>

>

>

산출:

People: {'Idrish', 'Archi', 'Jay'} Set after adding element: {1, 2, 3, 4, 5, 'Idrish', 'Archi', 'Jay', 'Daxit'}>

시간 복잡도: O(n)
보조 공간: O(n)

Python 세트에 대한 결합 연산

두 세트는 Union() 함수 또는 |를 사용하여 병합할 수 있습니다. 운영자. 두 해시 테이블 값 모두에 액세스하고 병합 작업을 통해 탐색하여 요소를 결합하는 동시에 중복 항목을 제거합니다. 이것의 시간복잡도는 O(len(s1) + len(s2)) 여기서 s1과 s2는 합집합이 필요한 두 세트입니다.

파이썬3




# Python Program to> # demonstrate union of> # two sets> people>=> {>'Jay'>,>'Idrish'>,>'Archil'>}> vampires>=> {>'Karan'>,>'Arjun'>}> dracula>=> {>'Deepanshu'>,>'Raju'>}> # Union using union()> # function> population>=> people.union(vampires)> print>(>'Union using union() function'>)> print>(population)> # Union using '|'> # operator> population>=> people|dracula> print>(>' Union using '|' operator'>)> print>(population)>

>

>

산출:

Union using union() function {'Karan', 'Idrish', 'Jay', 'Arjun', 'Archil'} Union using '|' operator {'Deepanshu', 'Idrish', 'Jay', 'Raju', 'Archil'}>

시간 복잡도: O(n)
보조 공간: O(n)

Python 세트의 교차 작업

이는 Intersection() 또는 & 연산자를 통해 수행할 수 있습니다. 공통 요소가 선택되었습니다. 이는 해시 목록을 반복하고 두 테이블 모두에서 동일한 값을 결합하는 것과 유사합니다. 이것의 시간 복잡도는 O(min(len(s1), len(s2))입니다. 여기서 s1과 s2는 합집합이 필요한 두 세트입니다.

파이썬3




# Python program to> # demonstrate intersection> # of two sets> set1>=> set>()> set2>=> set>()> for> i>in> range>(>5>):> >set1.add(i)> for> i>in> range>(>3>,>9>):> >set2.add(i)> # Intersection using> # intersection() function> set3>=> set1.intersection(set2)> print>(>'Intersection using intersection() function'>)> print>(set3)> # Intersection using> # '&' operator> set3>=> set1 & set2> print>(>' Intersection using '&' operator'>)> print>(set3)>

>

>

산출:

Intersection using intersection() function {3, 4} Intersection using '&' operator {3, 4}>

시간 복잡도: O(n)
보조 공간: O(n)

Python에서 집합의 차이점 찾기

세트 간의 차이점을 찾으려면. 연결리스트에서 차이점을 찾는 것과 유사합니다. 이는 Difference() 또는 – 연산자를 통해 수행됩니다. 차이 s1 – s2를 찾는 시간 복잡도는 O(len(s1))입니다.

파이썬3




# Python program to> # demonstrate difference> # of two sets> set1>=> set>()> set2>=> set>()> for> i>in> range>(>5>):> >set1.add(i)> for> i>in> range>(>3>,>9>):> >set2.add(i)> # Difference of two sets> # using difference() function> set3>=> set1.difference(set2)> print>(>' Difference of two sets using difference() function'>)> print>(set3)> # Difference of two sets> # using '-' operator> set3>=> set1>-> set2> print>(>' Difference of two sets using '-' operator'>)> print>(set3)>

>

>

산출:

Difference of two sets using difference() function {0, 1, 2} Difference of two sets using '-' operator {0, 1, 2}>

시간 복잡도: O(n)
보조 공간: O(n)

Python 세트 지우기

Set Clear() 메소드는 전체 세트를 그 자리에서 비웁니다.

파이썬3




# Python program to> # demonstrate clearing> # of set> set1>=> {>1>,>2>,>3>,>4>,>5>,>6>}> print>(>'Initial set'>)> print>(set1)> # This method will remove> # all the elements of the set> set1.clear()> print>(>' Set after using clear() function'>)> print>(set1)>

>

>

자바 연결

산출:

Initial set {1, 2, 3, 4, 5, 6} Set after using clear() function set()>

시간 복잡도: O(n)
보조 공간: O(n)

그러나 Python 세트에는 두 가지 주요 함정이 있습니다.

  1. 세트는 특정 순서로 요소를 유지하지 않습니다.
  2. 불변 유형의 인스턴스만 Python 세트에 추가할 수 있습니다.

세트의 시간 복잡도

작업 평균 사례 최악의 경우 노트
x(초) 오(1) 에)
유니온 s|t O(len(s)+len(t))
교차점(&T) O(최소(길이(들), 길이(티)) O(len(s) * len(t)) t가 세트가 아닌 경우 min을 max로 교체
다중 교차점 s1&s2&..&sn (n-1)*O(l) 여기서 l은 max(len(s1),..,len(sn))입니다.
차이 s-t O(만)

집합 연산자

집합 및 고정 집합은 다음 연산자를 지원합니다.

연산자 노트
s를 입력하세요 격리 확인
s에 없는 키 비격리 확인
s1 == s2 s1은 s2와 동일합니다.
s1 != s2 s1은 s2와 동일하지 않습니다.
s1 <= s2 s1은 s2의 하위 집합입니다.
s1 s1은 s2의 진부분집합이다
s1>= s2 s1은 s2의 상위 집합입니다.
s1> s2 s1은 s2의 진상위집합이다
s1 | s2 s1과 s2의 결합
s1 & s2 s1과 s2의 교차점
s1 – s2 s1에는 있지만 s2에는 없는 요소 집합
s1 ˆ s2 정확히 s1 또는 s2 중 하나에 있는 요소 집합

Python Set에 관한 최근 기사.