반응형
요즘 정보 수업 시간에 파이썬을 이용해 드론을 코딩해서 날리는 등 파이썬을 활용한 수업이 점점 많아지는 추세입니다. 오늘은 파이썬의 집합에 대해 알아보겠습니다. 집합은 다른 시퀀스 자료형들과 많이 다릅니다. 예를 들어서 리스트 같은 경우는 아이템을 넣은 순서를 그대로 유지해주고 같은 아이템을 여러 개 넣을 수도 있습니다. 그러나 집합은 순서를 유지해 주지 않고 같은 아이템을 여러 개 넣을 수도 없습니다.
집합
이름 | type | 예시 | 가변성 | 순서유지 | 중복허용 |
---|---|---|---|---|---|
리스트 | list | ["사과", 123, 3.14] |
가변 | O | O |
튜플 | tuple | ("사과", 123, 3.14) |
불변 | O | O |
집합 | set | {"사과", 123, 3.14} |
가변 | X | X |
사전 | dict | {"원주율":3.14, 123:"일이삼"} |
가변 | 3.6+ | 키X값O |
집합(set)을 만드는 방법
중괄호(물결괄호{}
)와 컴마(.
)를 이용해서 집합을 만들 수 있습니다.
그러나 비어있는 중괄호는 집합이 아니라 사전(dict)을 만드니 주의하세요.
In [1]:
#s = {} # 빈 셋을 만들려고 시도하면 dict가 만들어집니다.
s = {}
type(s)
Out[1]:
dict
In [2]:
# 집합을 만들려면 set()을 사용해야 합니다.
s = set()
type(s)
Out[2]:
set
리스트나 튜플과 달리 아이템의 순서를 유지해주지 않습니다.
중복된 아이템들은 제거되고 하나만 남습니다. 인덱싱이나 슬라이싱을 사용할 수 없습니다.
In [3]:
s = {100, 55, 1, 1, 1, 1, 2, 3}
s
Out[3]:
{1, 2, 3, 55, 100}
In [4]:
fruits = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
fruits
Out[4]:
{'apple', 'banana', 'orange', 'pear'}
[보충] 집합은 순서가 없고(unordered) 중복이 없는 컨테이너입니다.
순서가 없다는 얘기는 순서가 달라도 아이템들이 같으면 같은 집합이라는 의미입니다.
예를 들어 {1, 2}
와 {2, 1}
은 동일한 집합입니다.
간단한 예제에서 집합을 출력해보면 오름차순으로 정렬된 것처럼 보임에도 불구하고
집합 내부에서 정렬을 해주는 것은 아닙니다.
In [5]:
# 집합 객체를 출력할때 더 큰 숫자가 먼저 나오기도 합니다.
s = {19283791823791237.1239081273, -1923871928.2398237,
'Hello', 382478374.34987329487239847, 47834.340298340239809234890}
s
Out[5]:
{-1923871928.2398238,
1.9283791823791236e+16,
382478374.3498733,
47834.34029834024,
'Hello'}
In [6]:
# 리스트를 셋으로 변경할 수 있으며 이때 중복된 원소는 하나로 표현됩니다.
l = [1, 1, 2, 2, 3, 4, 5, 6, 1, 1]
s = set(l)
s
Out[6]:
{1, 2, 3, 4, 5, 6}
In [7]:
# 셋을 다시 리스트로 변경할 수 있습니다.
# [주의] 셋으로 바꾸면서 삭제됐던 아이템들이 다시 돌아오지는 않습니다.
new_l = list(s)
new_l
Out[7]:
[1, 2, 3, 4, 5, 6]
집합의 연산들
기본적인 아이템 추가, 멤버쉽 연산 외에 집합 연산을 사용할 수 있습니다.
In [8]:
# 리스트는 순서를 유지해줍니다.
l = [5, 6, 7]
l.append(4)
l
Out[8]:
[5, 6, 7, 4]
In [9]:
# 집합은 순서를 유지해주지 않습니다.
s = {5, 6, 7}
s.add(4)
s
Out[9]:
{4, 5, 6, 7}
- 수학시간에 배웠던 집합 사이의 연산 사용이 가능합니다.
In [10]:
A = {0, 2, 4, 6, 8}
B = {1, 2, 3, 4, 5}
print("합집합 :", A | B) # A.union(B)
print("교집합 :", A & B) # A.intersection(B)
print("차집합 :", A - B) # A.difference(B)
print("대칭차집합 :", A ^ B) # A.symmetric_difference(B)
합집합 : {0, 1, 2, 3, 4, 5, 6, 8}
교집합 : {2, 4}
차집합 : {0, 8, 6}
대칭차집합 : {0, 1, 3, 5, 6, 8}
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.
반응형
'수학과 코딩' 카테고리의 다른 글
파이썬(python) 표현식과 문장의 뜻 불리언(boolean) 자료형 (0) | 2022.07.28 |
---|---|
파이썬(python) 컨테이너(container)딕셔너리(dictionary) 총 정리 (0) | 2022.07.27 |
파이썬(python) 튜플(tuple)과 시퀀스(sequense) 정리 (0) | 2022.07.27 |
파이썬(python) 리스트의 사용 방법 총 정리(매소드, 중첩리스트, 반복문) (0) | 2022.07.26 |
파이썬(python) 컨테이너(containers)-리시트(list)의 사용 방법(가변성) (0) | 2022.07.26 |
댓글