세트

수학에는 집합(또는 집합 이론)과 같은 것이 있습니다. 아마도 당신은 수학 과정에서 그것들을 공부했을 것입니다. 벤 다이어그램에 익숙할 수도 있습니다.
실제로 집합은 요소 또는 구성원이라고 하는 개별 개체의 잘 정의된 집합으로 간단히 생각할 수 있습니다.
개체를 집합으로 그룹화하는 것은 프로그래밍에 유용할 수 있으며 Python은 기본 제공 유형 set을 제공합니다.

집합(유형 set)은 수행할 수 있는 고유한 작업에서 다른 유형의 개체와 다릅니다.

Python의 내장 유형 set 에는 다음과 같은 특징이 있습니다.
    세트의
  • 요소는 순서가 없습니다(즉, 동일한 요소를 포함하는 경우 두 세트가 동일함을 의미함). 세트의 요소는 순차적으로 저장되지 않고 요소가 세트에 속하는지 여부를 신속하게 결정할 수 있는 특정 알고리즘에 따라 저장됩니다(모든 요소를 ​​열거하지 않음).
  • 세트 요소는 고유합니다. 중복 요소는 허용되지 않습니다.
  • 세트는 변경 가능하지만(예를 들어, 세트에 요소를 추가할 수 있음) 세트 내부의 요소 자체는 변경 불가능해야 합니다(숫자, 문자열, 튜플). 목록이나 다른 집합을 집합의 요소로 만들 수 없습니다.

 

세트 만들기
1방향

집합의 요소를 중괄호 안에 단순히 열거합니다.

x = {"학교", "교사", "수업", 학생}
 

양방향 
내장 함수 set()를 사용하세요. x = 세트()    # 빈 세트 list_name = ["Andry", "Bob", "Caroline"] y = set(list_name)    # 여러 개를 만들 수 있습니다.                       # 모든 반복 가능한 객체에서 z = set(["앤드리", "밥", "캐롤라인"])     # {'밥', '캐롤라인', '앤드리'} k = set(("Andry", "Bob", "Caroline"))     # {'밥', '캐롤라인', '앤드리'} s = "문자열 s" m = 세트(들)    # {'i', 't', 'g', 'r', 'n', & #39;s, ' '} -                # 주의하세요!                # 요소의 순서는 무엇이든 될 수 있습니다.               # 요소는 반복되지 않습니다 n = {42, 'foo', 3.14159, 없음, (1, 2, 3)}     의 # 요소                                              #는 다른 유형일 수 있습니다.  
출력 설정
집합의 요소는 반드시 추가된 순서가 아니라 임의의 순서로 표시됩니다. z = set(["Andry", "Bob", "Caroline"])  print(z)     # {'밥', '캐롤라인', '앤드리'} 인쇄(*z)    # 밥 앤드리 캐롤라인

세트 작업 방법


집합의 요소 수
len() 메서드는 집합의 요소 수를 반환합니다. k = {42, 'foo', 3.14159, 없음, (1, 2, 3)}  print(len(k))    #5

 

요소가 집합에 있는지 확인(구성원에 있음)
k = {42, 'foo', 3.14159, 없음, (1, 2, 3)}  print(k에서 42)    # 참 print(2 in k)     # 거짓
세트에 포함된 요소는 변경 불가능한 유형이어야 하지만 세트 자체는 변경될 수 있습니다. 

 

설정할 요소 추가
x.add(<elem>)
세트  x에 유일한 불변 객체여야 하는 <elem>를 추가합니다.

 

세트에서 요소 제거
1) x.remove()
 x 집합에서 제거됩니다. <elem>이 x에 없으면 Python에서 예외(오류)가 발생합니다.

2) x.discard()
동일한 삭제이지만 세트에 요소가 없는 경우 예외를 발생시키지 않습니다.

3) x.pop()
집합에서 임의의 요소를 제거하고 반환합니다. 세트가 처음에 비어 있으면 예외(오류)가 발생합니다.

4) <코드>x.clear()
세트에서 모든 요소를 ​​제거합니다(세트를 지웁니다).

Error

정렬을 설정하시겠습니까?

아시다시피 세트의 요소 순서는 고려되지 않습니다. 그렇다면 Python 3에서 세트 정렬에 대해 이야기하는 것이 이치에 맞습니까?! (제목에 물음표가 있는 이유입니다.)

집합에서 요소를 빨리 찾으려면 정렬된 형태로 메모리에 저장하는 것이 바람직합니다.

몇 가지 예를 살펴보겠습니다. 동일한 집합에 있는 다른 데이터 유형의 요소는 어떻게 됩니까? 이러한 요소는 정렬하면 안 됩니다. print() 명령을 사용하여 요소를 인쇄하면 다음과 같이 출력됩니다.

a = {0, 1, 12, 'b', 'ab', 3, 2, 'a'} 인쇄(a) # {0, 1, 2, 3, 'a', 12, 'b', 'ab'} 이 경우 정렬되지 않은 값이 표시됩니다. 실행을 반복하면 출력 순서가 다를 수 있습니다. 그러나 이는 서로 다른 유형의 요소가 혼합된 경우에만 해당됩니다.

한 가지 유형(예: 숫자만)의 데이터를 표시해 보겠습니다. = {0, 1, 12, 3, 2} 인쇄(a) # {0, 1, 2, 3, 12} 모든 요소가 순서대로 표시됩니다. 목록으로 변환해 보겠습니다. = {0, 1, 12, 3, 2} b = 리스트(a) 인쇄(b) # [0, 1, 2, 3, 12] 마찬가지로 오름차순으로 정렬된 요소가 목록에 기록되었습니다.

요소가 동일한 유형이면 정렬된 형식으로 메모리에 저장되는 것으로 나타났습니다. 하지만 기대하지 않는 것이 좋습니다. Python 알고리즘은 변경될 수 있습니다.

세트에서 정렬된 목록을 가져와야 하는 경우 정렬(< code>sorted) 함수를 사용하여 ). 요소가 정확하게 정렬됩니다. 당신의 코드는 다른 사람들이 이해할 수 있을 것입니다.