본문 바로가기

Programming/CxO를 위한 코딩

04-4 집합(set)

반응형

집합(Set)은 수학에서의 '집합'과 같은 성질을 같습니다.  

 

  • 생성은 set( [원소1, 원소2, ...] )와 같이, set( ) 메서드에 리스트를 전달해서 생성 
  • 중복된 원소가 없음 (중복된 원소를 가질 수 없음)  
  • 원소간의 순서가 없음. 집어넣은 차례대로 원소가 있는게 아님 --> 인덱스 번호로 원소를 읽을 수 없음
  • 집합간의 연산을 통해서 교집합/합집합/차집합을 구할 수 있음

a = set([1,2,3,4])
b = set([4,5,6])

합 = a | b
print(합)  # {1, 2, 3, 4, 5, 6}

교 = a & b
print(교) # {4}

차 = a - b
print(차) # {1, 2, 3}

 

위 내용만 읽고 전부 이해 되었다면, 아랫 부분에 있는 내용들 스킵하고 다음글로 넘어가도 됩니다.

다음글: 04-4 배열(Numpy.array)

 


1. 생성(Create)

비어있는 집합 생성

a = set()

 

원소가 들어있는 집합 생성

a = set([4, 1, 2, 3])
print(a)  # {1, 2, 3, 4}

b = set([4, 4, 1,2,3,])
print(b) # {1, 2, 3, 4}

c = set(['b', 'b','c','d','a'])
print(c)  # {'a', 'd', 'b', 'c'}

c = set('hello')
print(c)  #{'l', 'o', 'h', 'e'}

리스트를 입력값으로해서 집합을 만들 수 있습니다.  a = set([1, 2, 3, 4]) 

 

중복된 원소가 입력되었을 경우는, 중복된 것이 제거된 상태로 자료를 만듭니다.

 

b = set([4, 4, 1,2,3,])
print(b) # {1, 2, 3, 4}  --> 중복된 4가 하나 버려졌음

 

원소간의 순서가 없습니다. 따라서, 입력된 순서도 존재하지도 않고, 알파벳 순서로 정렬되어 있지도 않습니다. 

또한 인덱스 번호도 없기때문에, 인덱스를 이용해서 읽을 수도 없습니다.

 

'hello'같은 문자열을 이용해서 집합을 만드는 경우, 문자열을 구성하는 각 알파벳이 집합의 원소가 되고, 중복된 문자없이 생성됩니다. 따라서, set('hello')를 하면 ('h', 'e', 'l', 'o')의 4개의 원소로 구성된 집합이 생성됩니다. 

 

2. 읽기(Read)

for 루프를 이용해서 집합(set)의 값을 읽을 수 있습니다.

 

c = set('hello')
print(c)  #{'l', 'o', 'h', 'e'}

for i in c:
    print(i)

for 루프를 이용해서 읽을 때, 읽혀지는 원소의 순서는 그때그때 다릅니다. 즉, 순서가 고정되어 있지 않습니다.

 

3. 수정(Update)

한 개 원소를 추가할 때는 add를, 한 개 원소를 삭제할 때는 remove를, 여러 개 원소를 추가할 때는 update 메서드를 사용합니다.

 

 

 

a = set([4, 1, 2, 3])
a.add(5)
print(a)  # {1, 2, 3, 4, 5}

a.remove(5)
print(a)  # {1, 2, 3, 4}

a.update([10, 11, 12])
print(a)  # {1, 2, 3, 4, 10, 11, 12}

 

4. 삭제(Delete)

remove 메서드를 이용해서 특정 원소를 지정해서 지울 수 있습니다.

 

집합 전체를 지우는 것은 del 함수를 사용하면 됩니다. 

a = set([4, 1, 2, 3])
a.remove(4) 
print(a) # {1, 2, 3}

del a
print(a) # error: 집합 a가 지워졌기에

 

del a[0] 같은 코드는 에러가 납니다. 인덱스 번호를 지정해서 원소를 지울 수 없습니다.

 

5. 집합 연산

집합(set) 자료형의 가장 큰 특징은 합집합/교집합/차집합 등을 연산을 통해 구할 수 있다는데 있습니다. 

 

집합 a와 b가 있을 때, 

 

  • 합집합 = a | b   : a와 b에 있는 모든 원소들(중복 제외)
  • 교집합 = a & b : a와 b에 공통으로 있는 원소들
  • 차집합 = a - b  : a에만 있는 원소들
a = set([1,2,3,4])
b = set([4,5,6])

합 = a | b
print(합)  # {1, 2, 3, 4, 5, 6}

교 = a & b
print(교) # {4}

차 = a - b
print(차) # {1, 2, 3}

 

-끝-


다음글: 04-4 배열(numpy.array)

목차로 이동:  [목차]CxO를 위한 코딩 강좌(파이썬을 중심으로)

반응형

'Programming > CxO를 위한 코딩' 카테고리의 다른 글

04-5 데이터 프레임(pandas.DataFrame)  (0) 2020.06.29
04-4 배열(numpy.array)  (4) 2020.06.25
04-3 튜플(tuple)  (0) 2020.06.25
04-2 딕셔너리(dict)  (0) 2020.06.25
04-1 리스트(list)  (0) 2020.06.25